var obj = {
prop1: 1,
prop2: 2,
prop3: 3
}
for (const prop in obj) {
console.log(prop)// prop1, prop2, prop3 출력
}
위의 코드를 보면 for 조건에 const prop를 입력했다.
const는 상수이다. 그러므로 prop의 값은 변하면 안된다고 생각하기 쉽다.
그러나 출력결과는 prop1, prop2, prop3로 값이 변하면서 나온다. 왜 이렇게 되는 것일까?
동작과정을 보면 이렇다.
{
let keys = Object.keys(obj);
for(let i=0; i<keys.length; i++) {
const prop = obj[keys[i]];
}
}
이것이 가능한 이유는 for문은 ES6에서 각각의 i마다 새로운 내용을 만들기 때문이다.
즉,
const prop = obj[keys[0]];
const prop = obj[keys[1]];
const prop = obj[keys[2]];
각각의 i마다 const prop를 생성한다.
for(const i=0; i<5; i++){
console.log(i);
}
그럼 위의 구문은 어떨까?
여기서는 error가 나온다.
완벽히 이해할 수 없지만 for in 구문에서는 const를 작동시킬 수 있지만 그냥 for 구문에서는 const동작이 안된다. 그러므로 let을 써주도록 하자.