const, let
if (true) {
var x = 3;
}
console.log(x); // 3
if (true) {
const y = 3;
}
console.log(y); // Uncaught ReferenceError: y is not defined
코드는 크롬 개발자 도구(F12)의 Console 탭에 적으면 됩니다. Enter를 누르면 코드가 실행되는데, 코드를 실행하지 않고 줄바꿈을 하려면 Shift + Enter를 입력합니다.
x는 정상적으로 출력되는데 y는 에러가 발생합니다.
var은 함수 스코프를 가지므로 if문의 블록과 관계없이 접근할 수 있습니다.
하지만, const와 let은 블록 스코프를 가지므로 블록 밖에서는 접근할 수 없습니다.
블록의 범위는 if, while, for, function 등에서 볼 수 있는 ({와 }사이)입니다.
const는 한 번 값을 할당하면 다른 값을 할당할 수 없습니다. 다른 값을 할당하려고 하면 에러가 발생합니다.
또한, 초기화할 때 값을 할당하지 않으면 에러가 발생합니다. 따라서 const는 선언한 변수를 상수라고 부르기도 합니다.
const a = 5;
a = 1; // Uncaught TypeError: Assignment to constant variable.
let b = 0;
b = 1; // 1
const c; // Uncaught SyntaxError: Missing initializer in const declaration