let | var | const | |
중복 선언 | X | O | X |
재할당 | O | O | X |
scope | block level scope | function level scope | block level scope |
- 함수 레벨 스코프
- 함수 내에서 선언된 변수는 함수 내에서만 유효
- 함수 내에서는 블록 내외부에 상관없이 유효
- 함수 외부에서는 참조 불가
- 블록 레벨 스코프
- 코드 블록 내부에서만 유효
- 블록 외부에서 참조 불가
- 호이스팅(hoisting)
- 호이스팅은 변수 및 함수 선언이 스코프의 최상위로 끌어올려지는 특성
- 코드 실행 전에 선언된 변수 및 함수가 메모리에 할당되어 있어 마치 선언이 코드의 최상단으로 끌어올려진 것처럼 동작하는 것을 의미함
- let - 변수를 선언문 이전에 참조 시 참조 에러 발생
- scope의 시작에서 변수의 선언까지 일시적 사각지대(Temporal Dead Zone)에 빠지기 때문
- 선언 단계와 초기화 단계가 분리되어 진행됨
- var - 선언 단계와 초기화 단계가 한 번에 이루어진다
요약
- 변수 선언은 기본적으로 const를 사용하되, 재할당이 필요한 경우 let 사용
- let 사용 시 변수의 스코프는 최대한 좁게 만든다
'JavaScript' 카테고리의 다른 글
자꾸 까먹는 map() (0) | 2025.01.29 |
---|---|
Throttle & Debounce (0) | 2024.06.30 |
정적 메서드(Static Method)와 인스턴스 메서드(Instance Method) (0) | 2024.06.16 |
얕은 복사 & 깊은 복사 (0) | 2024.06.16 |
Undefined & Null (0) | 2024.01.30 |