반응형
JavaScript Variable ( 변수 )
JavaScript는 크게 세가지의 변수 선언 방법이 있다.
- var
- let
- const
var
var
는 ES6 이전까지 변수를 선언하는 유일한 방법이었다.
특징으로는 다음과 같다.
- Function-level scope전역 변수의 남발
for loop 초기화 식에서 사용한 변수를, 외부나 전역에서 참조 가능 - 중복 선언 가능의도하지 않은 변수값 변경
- 변수 호이스팅변수가 선언된 위치보다 위에서 참조가 가능
- 변수 선언시 선언과 초기화가 같이 이뤄짐.
위와 같은 특징 때문에 전역으로 선언되는 변수가 많아지고,
복잡성이 증가되면서 대안으로 ES6 에서 let
과 const
가 도입되었다.
let
let
은 변수 선언에 사용되며 특징으로는 다음과 같다.
- Block-level scope코드 블록 내에서 선언된 변수는 블록 내에서만 유효
- 중복 선언 불가재 할당은 가능하지만, 같은 변수명으로 선언시 SyntaxError
- TDZ변수 선언 이전에 참조하면 ReferenceError
스코프의 시작부터 변수의 선언까지 일시적 사각지대(Temporal Dead Zone; TDZ)라 부름 - 전역 스코프 선언시 global Object의 프로퍼티가 되지 않음var
a = 1
로 선언시window.a === 1
let a = 1
로 선언시window.a === undefined
const
const
는 상수 선언에 사용되며 특징으로는 다음과 같다.
- Block-level scope코드 블록 내에서 선언된 변수는 블록 내에서만 유효
- 재할당 불가
const a = 1
선언 후a = 2
를 하면 TypeError - 객체의 프로퍼티는 변경 가능
const a = { b: 1 }
후a = { b: 2 }
는 불가능하지만a.b = 2
는 가능 - 전역 스코프 선언시 global Object의 프로퍼티가 되지 않음
var a = 1
로 선언시window.a === 1
const a = 1
로 선언시window.a === undefined
마무리
- ES6 사용시
var
는 사용하지 않는다. - 재할당이 필요하면
let
, 필요없다면const
를 사용하는게 좋다. - 객체타입은
const
를 사용하는것이 좋다.
개인적으로 공부한 내용을 정리한 것이기 때문에 반말을 사용한 점 양해 부탁드립니다.
잘못된 부분이나 피드백이 있으시다면, 댓글에 남겨주시면 감사하겠습니다!