Dev/JavaScript

JavaScript 변수 (Variable)

takeU 2021. 7. 5. 21:14
반응형

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