var

변수 재선언이 가능하다. 코드량이 많아진다면 어디서 어떻게 사용될지 파악하기 힘들며 값이 바뀔 우려가 있다.

함수 밖에서 선언한 var 변수는 전역변수, 내부에서 선언한 변수는 지역변수이다.

변수 재선언 가능

변수 재할당 가능

let

변수 재선언 불가

변수 재할당 가능

const

변수 재선언 불가

변수 재할당 불가

호이스팅

var, function 선언문을 해당 스코프의 선두로 옮긴 것처럼 동작하는 특성을 말함.

자바스크립트는 ES6에서 도입된 let, const를 포함하여 모든 선언(var, let, const, function, function*, class)을 호이스팅함.

하지만 let으로 선언된 변수는 스코프의 시작에서 변수의 선언까지 **일시적 사각지대(Temporal Dead Zone; TDZ)**에 빠진다.

변수의 생성 과정