열거 가능한 프로퍼티란?
열거 가능한 값이 true로 설정되어 있어 key만 반복할 수 있고 비열거형인 value에는 접근할 수 없다.
let arr = ["a", "b", "c"];
for (let i in arr) {
console.log(i);
}
// 0 1 2
var obj = { a: 1, b: 2, c: 3 };
for (var j in obj) {
console.log(j);
}
// a, b, c
for ... in 문에서는 순서에 따라 index를 반환하지 않을 수 있기 때문에 index 순서가 중요한 경우는 사용하지 않는 것이 좋다.
⚠️ length 연산자를 사용할 수 없다.
일반 객체는 iterable하지 않기 때문에 for of 사용시 TypeError가 발생한다!
일반 객체에서는 TypeError 발생!
let obj = ["sypaik", "developer"];
for (let value of obj) {
console.log(value);
}
// 'sypaik', 'developer'
이와 같이 배열에서는 for ... of 반복문을 사용하는 것이 좋다.
for ... in문
💡 for ... in문은 언제 사용하나?
키-값 쌍의 데이터의 경우 | 특정 값을 가진 key가 있는지 확인하려는 경우 | 객체에 key를 가져오는 작업이 필요한 경우
for ... of문
따라서! for ... in은 객체(Object)의 key를 순회하고, for ... of는 객체의 value를 순회할 때 사용한다.
Reference
https://joooing.tistory.com/entry/Iteration2-for-in%EB%AC%B8-for-of%EB%AC%B8
https://whoyoung90.tistory.com/24