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은 선언, 초기화, 할당이 동시에 진행됩니다.