이러한 문제점 때문에 개발시 안전한 let 키워드와 const 키워드를 사용한다.
let 키워드로 선언한 변수는 선언단계와 초기화 단계로 분리되어 진행된다.
즉, 런타임 이전에 암묵적으로 선언 단계가 먼저 실행되지만, 초기화 단계는 변수 선언문에 도달했을 때 실행된다.
let foo = 1; // 전역 변수
{
console.log(foo); // Error
let foo = 2; // 지역 변수
}
const person = {
name: 'Lee'
};
person.name = 'Kom';
console.log(person); // {name: 'kom'}
변수 선언에는 기본적으로 const를 사용하고, 재할당이 필요한 경우에 한정하여 let을 사용한다. 의도치 않은 재할당을 방지하기 때문에 const를 지향한다.