JS let, const와 블록 레벨 스코프

ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것이었다. var 키워드로 선언된 변수는 몇가지 특징이 있다.

  1. 변수 중복 선언 허용
  2. 함수 레벨 스코프
  3. 변수 호이스팅

let 키워드

  1. 변수 중복 선언 금지
  2. 블록 레벨 스코프
  3. 변수 호이스팅
  • let 키워드로 선언한 변수는 “선언 단계”와 “초기화 단계”가 분리되어 진행된다.
  • 일시적 사각지대(Temporal Dead Zone; TDZ): 스코프의 시작 지점부터 초기화 시작 지점까지의 구간
  • 자바스크립트는 ES6에서 도입된 let, const를 포함하여 모든 선언(var, let, const, function, function*, class 등)을 호이스팅한다.
  1. let 키워드로 선언한 전역 변수는 전역 객체 window의 프로퍼티가 아니다. window.foo와 같이 접근할 수 없다.

const 키워드

  1. 상수(constant 변하지 않는 고정된 값)를 선언하기 위해 사용 하지만, 반드시 상수만을 위해 사용하지는 않는다.
  • 상수를 값으로 갖는 변수는 일반적으로 변수 이름을 대문자로 선언하여 상수를 저장하고 있음을 명확히 나타낸다.
  • 여러 단어로 이루어진 경우에는 언더스코어(_)로 구분하는 것이 일반적이다.
  • 상수는 프로그램 전체에서 공통 사용하므로 나중에 상수가 변경되면 상수만을 변경하면 되기 때문에 유지보수성이 대폭 향상된다.
  1. 선언과 초기화
  • let 키워드로 선언한 변수는 재할당이 자유로우나 const 키워드로 선언한 변수는 재할당이 금지 된다.
  • const 키워드로 선언한 변수는 반드시 선언과 동시에 할당이 이루어져야 한다.
  1. 블록 레벨 스코프
  2. const 키워드에 할당한 객체는 변경 가능하다.
  • const 키워드로 선언한 변수에 객체를 할당한 경우, 원시 값을 할당한 경우와 마찬가지로 재할당이 금지된다. 그러나 객체는 변경 가능한 값(mutable value)이기 때문에 const 키워드로 선언된 변수에 할당된 객체는 변경이 가능하다.

var vs. let vs. const

  1. ES6를 사용한다면 var 키워드는 사용하지 않는다.
  2. 재할당이 필요한 경우에 한정해 let 키워드를 사용한다. 이때 변수의 스코프는 최대한 좁게 만든다.
  3. 변경이 발생하지 않는(재할당이 필요 없는 상수) 원시 값과 객체에는 const 키워드를 사용한다.

REFERENCE
https://poiemaweb.com

  • © 2020-2025 404 Not Found
  • Powered by Hexo Theme Ayer