for문에서의 주의사항

minho·2021년 12월 20일
0
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을 써주도록 하자.

profile
Live the way you think

0개의 댓글