var
var
키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다.var
키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다.-
var
키워드로 선언한 변수는 변수 선언문 이전에 참조할 수 있다. (단, 할당문 이전에 변수를 참조하면 언제나undefined
를 반환한다.)var
키워드로 선언한 변수는 런타임 이전에 자바스크립트 엔진에 의해 암묵적으로 선언 단계와 초기화 단계가 한 번에 진행된다.
let
let
키워드로 선언된 변수는 중복 선언하면 문법 에러가 발생한다.let
키워드로 선언한 변수는 블록 레벨 스코프를 따른다.-
let
키워드로 선언한 변수는 변수 선언문 이전에 참조하면 참조 에러가 발생한다.let
키워드로 선언한 변수는 선언 단계와 초기화 단계가 분리되어 진행된다. 즉, 런타임 이전에 자바스크립트 엔진에 의해 암묵적으로 선언 단계가 먼저 실행되지만 초기화 단계는 변수 선언문에 도달했을 때 실행된다.- 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간을 일시적 사각지대(
Temporal Dead Zone
)이라고 부른다.
const
const
키워드로 선언된 변수는 값의 재할당이 금지된다. (=상수)const
키워드로 선언한 변수는 블록 레벨 스코프를 따른다.const
키워드로 선언한 변수는 반드시 선언과 동시에 초기화해야 한다.
참고
- 책 코어 자바스크립트
- 책 모던 자바스크립트 Deep Dive