ES6 문법에서는 const와 let가 도입되었다.
const : 상수(constant), 한번 지정하고 나면 변경이 불가능한 수를 선언할 때 사용
let : 동적인 값을 담을 수 있는 변수를 선언할 때 사용
이전에는 var를 사용했는데, var는 scope(해당 값을 사용할 수 있는 코드 영역)가 함수 단위이다.
예제)
function varFunction() {
var a = 'hello';
if(true) {
var a = 'bye';
console.log(a); //bye
}
console.log(a); //bye
}
varFunction();
위의 코드는 if문 밖에서 var 변수를 선언했으나 if문 내에서 변수를 다른 값으로 새로 선언했고, 그 영향이 if문 밖에서도 이어졌다.
function letFunction() {
let a = 'hello';
if(true) {
let a = 'bye';
console.log(a); //bye
}
console.log(a); //hello
}
letFunction();
let과 const는 scope가 함수 단위가 아닌 블록 단위이므로, if문 내부에서 선언한 a값은 if문 밖의 a값을 변경하지 않는다.
(let과 const를 사용할 때 같은 블록 내부에서 중복 선언은 불가하다.)