TIL
<자바스크립트 Javascript> let 키워드 (1)
낭만인
2022. 1. 11. 10:32
- 함수 레벨 스코프 v.s. 블록 레벨 스코프
함수 레벨 스코프는 함수를 기준으로, 블록 레벨 스코프는 블록을 기준으로 변수의 유형이 결정된다. 즉, 함수 레벨 스코프는 함수 내에서 선언되면 지역 변수로 함수 외부에서 선언되면 전역 변수로 취급하고, 블록 레벨 스코프는 모든 코드 블록 내부에서 선언된 변수를 지역 변수로 취급한다.
자바스크립트는 이 중 함수 레벨 스코프를 따른다.
- 블록 레벨 스코프를 따르는 let
기존의 var 키워드로 선언된 변수는 함수 레벨 스코프를 따른다. 그러나 ES6부터는 let 키워드가 추가되면서, let 키워드로 선언된 변수는 블록 레벨 스코프를 따르게 되었다.
- let 키워드의 특징
1) 변수 중복 선언 불가능
기존의 var 키워드에서 변수 이름을 중복으로 선언이 가능했던 것과 달리, let 키워드는 변수 이름의 중복을 허용하지 않는다.
2) 호이스팅 에러
기존의 var 키워드로 선언된 변수는 선언문 이전에 참조하는 것이 가능했으나, let 키워드로 선언한 변수는 이 경우 참조 에러(Reference Error)가 발생한다.
이는 변수 생성 단계에서, var 키워드로 선언된 변수는 선언과 초기화가 동시에 이루어짐과 달리 let 키워드로 선언된 변수는 이 두 단계가 분리되어 실행되기 때문이다. 따라서 let 키워드 특성상 변수 선언 후 초기화 단계가 실행되기 전까지 일종의 ‘일시적 사각지대(Temporal Dead Zone; TDZ)’가 생기게 된다.
참고 : poiemaweb 웹사이트