JavaScript 변수 ( ES6 )

JavaScript logo

JavaScript Variable ( 변수 )

JavaScript는 크게 세가지의 변수 선언 방법이 있다.

  1. var
  2. let
  3. const

var

var는 ES6 이전까지 변수를 선언하는 유일한 방법이었다.
특징으로는 다음과 같다.

  1. Function-level scope
    • 전역 변수의 남발
    • for loop 초기화 식에서 사용한 변수를, 외부나 전역에서 참조 가능
  2. 중복 선언 가능
    • 의도하지 않은 변수값 변경
  3. 변수 호이스팅
    • 변수가 선언된 위치보다 위에서 참조가 가능
  4. 변수 선언시 선언과 초기화가 같이 이뤄짐.

위와 같은 특징 때문에 전역으로 선언되는 변수가 많아지고,
복잡성이 증가되면서 대안으로 ES6 에서 letconst가 도입되었다.

let

let은 변수 선언에 사용되며 특징으로는 다음과 같다.

  1. Block-level scope
    • 코드 블록 내에서 선언된 변수는 블록 내에서만 유효
  2. 중복 선언 불가
    • 재 할당은 가능하지만, 같은 변수명으로 선언시 SyntaxError
  3. TDZ
    • 변수 선언 이전에 참조하면 ReferenceError
    • 스코프의 시작부터 변수의 선언까지 일시적 사각지대(Temporal Dead Zone; TDZ)라 부름
  4. 전역 스코프 선언시 global Object의 프로퍼티가 되지 않음
    • var a = 1로 선언시 window.a === 1
    • let a = 1로 선언시 window.a === undefined

const

const는 상수 선언에 사용되며 특징으로는 다음과 같다.

  1. Block-level scope
    • 코드 블록 내에서 선언된 변수는 블록 내에서만 유효
  2. 재할당 불가
    • const a = 1 선언 후 a = 2를 하면 TypeError
  3. 객체의 프로퍼티는 변경 가능
    • const a = { b: 1 }a = { b: 2 }는 불가능하지만 a.b = 2는 가능
  4. 전역 스코프 선언시 global Object의 프로퍼티가 되지 않음
    • var a = 1로 선언시 window.a === 1
    • const a = 1로 선언시 window.a === undefined

마무리

  • ES6 사용시 var는 사용하지 않는다.
  • 재할당이 필요하면 let, 필요없다면 const를 사용하는게 좋다.
  • 객체타입은 const를 사용하는것이 좋다.

Reference

개인적으로 공부한 내용을 정리한 것이기 때문에 반말을 사용한 점 양해 부탁드립니다.
잘못된 부분이나 피드백이 있으시다면, 댓글에 남겨주시면 감사하겠습니다!

공유하기