- var는 런타임 이전에 자바스크립트 엔진에 의해 암묵적으로 '선언단계' 와 '초기화단계'가 한번에 진행된다. 그러나 let키워드로 선언한 변수는 '선언단계' 와 '초기화단계'가 분리되어 진행된다. 즉, 런타임 이전에 선언은 실행되지만 초기화 단계는 변수 선언문에 도달했을 때 실행된다. 스코프의 시작점부터 초기화 시작지점까지 변수를 참조할 수 없는 구간을 일시적 사각지대라 한다.
ex)
const foo // SyntaxError: Missing initializer in const declaration
재할당 금지
상수
const키워드와 객체
ex)
const person = {
name: "Lee"
}
person.name = "Kim"
console.log(person) // { name : "Kim" }
-> 재할당은 불가능하나 프로퍼티 동적생성, 삭제, 변경을 통해 객체 변경이 가능하다
결론
var
vslet
vsconst
- 변수 선언에는 기본적으로 const 사용
- let은 재할당이 필요한 경우 한정해서 사용
- ES6를 사용하면 var키워드 x
- 변수의 스코프는 최대한 좁게!