for...in문은 상속된 열거 가능한 속성들을 포함하여 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복한다
const object = {
a: 1,
b: 2,
c: 3
};
for (const property in object) {
console.log(`${property}: ${object[property]}`);
console.log(typeof property);
}
// "a: 1"
// "b: 2"
// "c: 3"
// property 는 전부 String
// 숫자를 값으로 추가했어도 결과는 String으로 나온다
let arr = [1, 2, 3];
for (let num in arr){
console.log(num);
console.log(typeof num);
}
// 0
// 1
// 2
// String
arr의 index값이 출력되기 때문에 원하는 값을 가져오기 어렵다
for...of
: 반복가능한 객체 (Array, Map, Set, String, TypedArray, arguments 객체 등을 포함)에 대해서 반복하고 기능수행
const array1 = ['a', 'b', 'c'];
for (const element of array1) {
console.log(element);
}
// expected output: "a"
// expected output: "b"
// expected output: "c"
const object = {
a: 1,
b: 2,
c: 3
};
for (let property of object){
console.log(property);
console.log(typeof property);
}
// Uncaught TypeError: object is not iterable
object is not iterable 오류를 보여주며 사용할 수 없다
object는 반복이 가능하지 않아서 사용 할 수 없다는 뜻인데
객체에는 순서가 없기 때문에 사용 할 수 없다