var, let , const
var : 변수 재선언 가능
const, let : 변수 재선언 불가능
const : 변수 재할당 불가능 (상수)
let : 변수 재할당 가능
var : functional-scope 로 호이스팅됨
const, let : block-scope 로 호이스팅됨
console.log(a)
var a = "hi"
출력 : undefined
console.log(b)
const b = "hi"
출력 : 에러!
즉, let const는 변수를 선언과 초기화 후, 참조해야한다.
function-level scope vs block-level scope
- function-level scope
함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다.
var
- block-level scope
모든 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다.
const, let