-
let, const 키워드와 블록 레벨 스코프개발/프론트엔드 2023. 5. 24. 23:24
var 키워드의 문제점
- 같은 스코프 내, 변수의 중복 선언 허용
- 함수 레벨 스코프
- 변수 호이스팅
let 키워드의 특징
- 변수 중복 선언 금지. 중복 선언 시 문법 에러
- 블록 레벨 스코프 : 모든 코드 블록(if, for, while, try/catch 등을 포함)을 지역 스코프로 인정.
- 선언 단계는 런타임 이전에, 초기화 단계(undefined 할당)은 런타임 도중 선언 문장을 만났을 때 진행. 따라서 선언문 전에 참조하면 referenceError가 발생하고, 호이스팅이 발생하지 않는 것처럼(하지만 실제로 호이스팅은 발생한다.) 동작하게 된다. 선언 단계와 초기화 단계 사이 참조할 수 없는 구간을 Temporal Dead Zone 이라 부름.
- 전역 객체( window, …)의 프로퍼티가 아니다.
const 키워드의 특징
- let 키워드의 특징 모두를 똑같이 가짐.
- 선언과 동시에 초기화해야 함.
- 재할당이 금지됨
- 보통 전체 대문자 + 스네이크 케이스로 표현
- 당연하게도 객체가 할당되어 있을 경우 해당 객체 프로퍼티의 변경은 가능. 참조하는 주소값이 바뀌는게 아니므로.
var, let, const 사용상의 조언
- ES6 사용한다면 var 키워드는 사용하지 않기.
- 변수 선언에는 기본적으로 const를 사용하기.
- 나중에 봤을 때 반드시 재할당이 필요한 경우라면 let 키워드로 변경하기.
'개발 > 프론트엔드' 카테고리의 다른 글
Virtual DOM (0) 2023.07.03 전역 변수의 문제점 (0) 2023.05.24 스코프 (0) 2023.05.23 함수 (0) 2023.05.23 원시 값과 객체의 비교 (0) 2023.05.23