for 반복문에서의 var 유효 범위
위의 예제를 보다보면 흔히 헷갈릴 수 있는 부분이 "var의 유효 범위가 {}에 제한되나?" 입니다.
아래 예제를 살펴보겠습니다.
var a = 10;
for (var a = 0; a < 5; a++) {
console.log(a); // 0 1 2 3 4 5
}
console.log(a); // 6
var a = 10;로 변수 a를 선언한 상태에서 for 반복문에 동일한 변수 이름 a를 사용했습니다.
이렇게 되면 {} 으로 변수의 유효 범위가 제한되지 않기 때문에 for 반복문이 끝나고나서
console.log(a); 를 출력하면 for 반복문의 마지막 결과 값이 출력됩니다.
이러한 문제점을 해결하고 다른 언어와 통일감을 주기 위해 ES6에서는
const와 let의 변수 유효 범위를 블록{}으로 제한하였습니다.
이번엔 위 반복문 코드에 var 대신 let을 적용해보겠습니다.
var a = 10;
for (let a = 0; a < 5; a++) {
console.log(a); // 0 1 2 3 4 5
}
console.log(a); // 10
반복문의 조건 변수 a를 let으로 선언하니 변수의 유효 범위가 for 반복문의 {} 블록 안으로 제한되었습니다.