[JavaScript] let, var, const

2025. 6. 22. 23:59·🖥️개발/🐥JavaScript


이번 주에는 자바스크립트에서 변수를 선언할 때 항상 등장하는 var, let, const 의 차이점과 선택 기준에 대해 정리해볼게요!

 

 

✅ 1. var

 

자바스크립트 초창기부터 사용되던 변수 선언 방식입니다. 하지만 몇 가지 독특한 특징 때문에 현재는 잘 사용하지 않습니다.

  • 함수 스코프: var로 선언된 변수는 블록({})이 아닌, 함수 단위로 스코프가 결정됩니다.
  • 호이스팅: 선언 이전에 변수에 접근해도 오류가 나지 않고 undefined가 반환됩니다.
  • 중복 선언 허용: 같은 스코프 내에서 같은 이름으로 여러 번 선언이 가능합니다.

이런 특징들은 예기치 않은 버그를 발생시키기 쉬워서, 이후 새로운 선언 키워드가 등장하게 됩니다.

 

 

✅ 2. let


ES6에서 도입된 키워드로, var의 단점을 보완했습니다.

  • 블록 스코프: let은 변수를 선언한 블록 내에서만 유효합니다.
  • 호이스팅은 되지만 초기화 전 접근 불가: 선언 전에 접근하면 오류가 발생합니다 (TDZ, Temporal Dead Zone).
  • 중복 선언 불가: 같은 스코프 내에서 중복 선언을 막아줍니다.

일반적인 변수 선언에는 let을 사용하는 것이 기본으로 자리잡았습니다.

 

 

✅ 3. const


let과 거의 동일한 특징을 가지지만, 추가로 "값 재할당 불가"라는 특성이 있습니다.

  • 재할당 불가: 한 번 할당한 이후 다른 값으로 변경할 수 없습니다.
  • 하지만 객체의 내부 값 변경은 가능: 객체나 배열을 const로 선언하더라도 내부 속성이나 요소는 수정 가능합니다.

불변성을 유지하고 싶은 값에 const를 사용하면 의도를 명확히 드러낼 수 있습니다.

 

 

 

✅  그럼 어떤 걸 쓰는 게 좋을까?

  • 변하지 않는 값은 const 사용 (가능한 최대한 const 사용 권장)
  • 값이 변경될 수 있다면 let 사용
  • var는 특별한 이유가 없는 한 사용하지 않는 것이 좋습니다

✅ 간단 정리

  • var: 이제는 거의 사용하지 않음 (과거 레거시 코드 제외)
  • let: 변경 가능한 값, 블록 스코프 적용
  • const: 불변 변수 선언, 유지보수에 가장 유리

 

 

 

썸네일

 

저작자표시 비영리 (새창열림)

'🖥️개발 > 🐥JavaScript' 카테고리의 다른 글

[JavaScript] 이벤트 루프, 마이크로태스크 큐  (2) 2025.07.06
[JavaScript] 얕은 복사 / 깊은 복사 / 구조 분해 복사 정리하기  (1) 2025.06.29
[JavaScript] 화살표 함수(Arrow Function)  (3) 2025.06.08
[JavaScript] Global This  (0) 2025.05.03
[JavaScript] 로컬 스토리지와 세션 스토리지 (localStorage & sessionStorage)  (0) 2025.04.07
'🖥️개발/🐥JavaScript' 카테고리의 다른 글
  • [JavaScript] 이벤트 루프, 마이크로태스크 큐
  • [JavaScript] 얕은 복사 / 깊은 복사 / 구조 분해 복사 정리하기
  • [JavaScript] 화살표 함수(Arrow Function)
  • [JavaScript] Global This
주_Y
주_Y
  • 주_Y
    인생은 온통 한바탕 꿈
    주_Y
  • 전체
    오늘
    어제
    • 🏠HOME (122) N
      • 🔔공지사항 (1)
      • 🎨TIL (33)
        • 🐯2022 (15)
        • 🐰2023 (18)
      • ⏳습관 (36)
        • 🌞Good Morning (36)
      • 🎞️회고 (2)
        • 🦁부트캠프 (2)
      • 🖥️개발 (36)
        • 🐥JavaScript (14)
        • 🐋React (8)
        • 🧸Python (2)
        • 🖍️ Android Studio (2)
        • 🔍Baekjoon (4)
        • 🏵️JSP (1)
        • 🗂️Github (1)
        • 🎙️강연 (1)
        • 🛩️사이드 플젝 • 협업 (2)
        • 💚접근성 (1)
      • 🔧CS 공부 (2) N
        • 🧭자료구조 (1)
      • 🦁부트캠프 (7)
        • 🐯 JS 수업 정리 (6)
        • 🐯JAVASCRIPT.INFO 글 읽기 (1)
      • ℹ️티스토리 (1)
      • 🥁와글와글 잡담 (1)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
주_Y
[JavaScript] let, var, const
상단으로

티스토리툴바