JavaScript

let/var/const 차이점

kelly09 2024. 1. 25. 17:15

 

  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