자바스크립트 에서 변수는 var, let, const
세 가지 키워드로 선언 할 수 있다.
세 가지 키워드의 차이점을 알아보기 이전에, 자바스크립트는 다음과 같은 특징을 가지고 있다.
자바스크립트 엔진은 코드를 한 줄씩 순차적으로 실행하기 전에,
선언문 (변수 선언문, 함수 선언문 등)을 찾아내 먼저 실행시킨다.
즉, 변수 선언이 어디에 있든 상관 없이 해당 스코프의 최상단에서 먼저 선언하는 특징 (호이스팅) 을 가지고 있다.
foo 라는 변수를 선언과 동시에 값을 할당해주었으나, 선언문은 런타임 이전에 호이스팅 되어 실행되므로 암묵적으로 undefined가 할당되어 다음과 같은 결과가 나온다.
console.log(foo); // undefined
var foo = 1;
console.log(foo); // 1
var
는 다음과 같은 특징을 가지고 있다.
console.log(foo); // undefined (호이스팅 되면서 초기화)
var foo = 1;
console.log(foo); // 1
var foo = 1;
console.log(foo); // 1
// 재할당
foo = 2;
console.log(foo); // 2
// 재선언
var foo = 3;
console.log(foo); // 3