let weather = 'rainy';
let day = 'Sunday';
const today = `${weather} ${day}` // 'rainy Sunday'
let과 const는 ES2015(ES6)에 추가된 변수 선언 키워드.
hoisting 규칙이 없고, block scoping을 지원한다.
👉 var 보다 훨씬 예측 가능한 코드를 짤 수 있다.
let x = 1;
x = 2;
const y = 1;
y = 2 // Uncaught TypeError: Assignmet to constant variable
let은 레퍼런스가 바뀔 수 있고 const는 바뀔 수 없다.
var x = 1;
var x = 2; // OK
let y = 1;
let y = 2; // Uncaught SyntaxError: Identifier 'y' has already been declared
var와 달리 let과 const는 같은 스코프 내에서 같은 변수를 두 번 이상 정의 할 수 없다.
console.log(x); // undefined
var x = 0;
console.log(y); // ReferenceError: Cannot access 'y' before initialization
const y = 0;
var와 달리 let과 const는 변수를 정의하기 전에는 사용할 수 없다.
var x = 1;
{
var x = 2;
console.log(x); // 2
}
console.log(x); // 2
const y = 1;
{
const y = 2;
console.log(y); // 2
}
console.log(y); // 1
let과 const는 같은 scoping rule을 따른다.