ES2015 전환점

var 습관에서 블록 스코프 기반 선언으로

이 절은 `var`의 함수 스코프, 호이스팅, 재선언 허용을 짚고 `let`과 `const`로 변수의 수명과 변경 가능성을 더 명확하게 표현하는 흐름으로 이어집니다.

먼저 확인

`var`가 헷갈리는 이유

`if`나 `for` 블록 안에서 선언해도 블록 밖에서 접근될 수 있고, 선언 전에 읽으면 오류 대신 `undefined`가 나올 수 있습니다.

if (true) {
  var x = 10;
}
console.log(x); // 10
다음 해결

`let`은 블록 안에서만 유효

`let`은 중괄호로 묶인 범위를 따르며 같은 스코프에서 같은 이름을 다시 선언하지 못하게 해 실수를 줄입니다.

for (let i = 0; i < 3; i++) {
  console.log(i);
}
// 밖에서는 i 접근 불가
마지막 선택

`const`를 기본값으로 둔다

재할당이 필요 없으면 `const`, 값이 바뀌어야 하면 `let`을 씁니다. 새 코드에서 `var`는 피하는 것이 현재 권장 흐름입니다.

const API_URL = "...";
let counter = 0;