JavaScript

[JavaScript] var를 지양하자

주니야 공부하자 2023. 12. 11. 17:49

TDZ(Temporal Dead Zone) 일시적 사각지대 - 스코프의 시작 ~ 초기화 시작 구간

 

JavaScript에서의 변수는 선언, 초기화, 할당이라는 3가지 단계를 거쳐 생성됩니다.

var 

- 함수 스코프

- 선언과 초기화를 동시에 진행

- 메모리에 undefined를 할당하여 변수 선언 전에 undefined가 호출되는 호이스팅 발생

console.log(name) // undefined

var name = '이름'

 

 

- 재선언(중복선언) 가능

var name = '이름1'
var name = '이름2'
var name = '이름3'

console.log(name) // 이름3

편하게 사용할 수 있지만 코드가 길어질수록 위험합니다.

let, const

- 블록 스코프

- 선언과 초기화 분리

- 호이스팅이 되지만 메모리가 할당되지 않아 참조 에러(ReferenceError) 발생

- 재선언 시 에러

- 자연스럽고 안전한 코드가 됩니다.

 

function은 선언, 초기화, 할당이 동시에 진행됩니다.