[JavaScript] for...in과 for...of 차이점 정리
포스트
취소

[JavaScript] for...in과 for...of 차이점 정리

🧐 for…in과 for…of는 뭐가 다를까요?

JavaScript에서 반복문을 사용하다 보면 for...infor...of를 만나게 됩니다.

이름이 비슷해서 헷갈리기 쉽지만, 두 반복문은 사용하는 목적이 다릅니다.

간단히 말하면 다음과 같습니다.

for...in
→ key를 순회합니다.

for...of
→ value를 순회합니다.

이번 글에서는 두 반복문의 차이를 예제로 정리해보겠습니다.


🔑 for…in

for...in은 객체의 key를 순회할 때 사용합니다.

배열에 사용하면 배열의 index가 나옵니다.

1
2
3
4
5
6
7
8
9
10
11
const array = ["문동은", "손명오", "박재준", "이사라", "최혜정"];

for (const index in array) {
  console.log(index);
}

// "0"
// "1"
// "2"
// "3"
// "4"

배열의 값이 아니라 인덱스가 출력되는 것을 볼 수 있습니다.

객체에서는 다음처럼 key를 순회할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
const user = {
  name: "문동은",
  age: 23,
  job: "teacher",
};

for (const key in user) {
  console.log(key, user[key]);
}

// name 문동은
// age 23
// job teacher

그래서 for...in은 배열보다 객체를 순회할 때 더 잘 어울립니다.


📦 for…of

for...of는 반복 가능한 객체의 value를 순회할 때 사용합니다.

배열의 실제 값을 하나씩 꺼내고 싶다면 for...of가 더 적합합니다.

1
2
3
4
5
6
7
8
9
10
11
const array = ["문동은", "손명오", "박재준", "이사라", "최혜정"];

for (const value of array) {
  console.log(value);
}

// "문동은"
// "손명오"
// "박재준"
// "이사라"
// "최혜정"

문자열도 반복 가능한 값이기 때문에 for...of로 순회할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
const text = "hello";

for (const char of text) {
  console.log(char);
}

// h
// e
// l
// l
// o

📊 비교 정리

구분for…infor…of
순회 대상key 또는 indexvalue
배열에서 결과인덱스실제 값
객체 순회적합일반 객체에는 바로 사용 불가
배열 순회권장하지 않음적합

✅ 언제 무엇을 쓰면 좋을까요?

객체의 key를 순회해야 한다면 for...in을 사용할 수 있습니다.

1
2
3
for (const key in object) {
  console.log(key, object[key]);
}

배열이나 문자열의 값을 순회해야 한다면 for...of를 사용하면 됩니다.

1
2
3
for (const item of array) {
  console.log(item);
}

✅ 정리

for...infor...of는 비슷해 보이지만 목적이 다릅니다.

  • for...in은 key를 순회합니다.
  • for...of는 value를 순회합니다.
  • 배열의 값을 꺼낼 때는 for...of가 더 자연스럽습니다.
  • 객체의 key를 확인할 때는 for...in을 사용할 수 있습니다.

배열인지 객체인지, 그리고 key가 필요한지 value가 필요한지를 기준으로 선택하면 덜 헷갈립니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

[JavaScript] const, let, var 차이점 정리

[TypeScript] styled-components에서 타입 지정하기