● var, let, const
자바스크립트의 변수 선언은 var로만 가능했었으나, ES2015(ES6) 부터 let과 const가 추가되었다.
let은 변수의 개념, const는 상수의 개념으로 생각하면 된다.
우선 var, let, const의 차이점은 5가지가 있다.
○ 중복선언 가능 여부, 재할당 가능 여부
중복 선언 | 재할당 | |
var | O | O |
let | X | O |
const | X | X |
○ 변수 스코프 유효 범위
- var: 함수 레벨 스코프로 함수 내부에 선언된 변수만 지역변수로 한정하며 나머지는 모두 전역변수로 간주한다.
- let, const: 블록 레벨 스코프로 함수 내부뿐만 아니라 if, for문 등의 코드 블럭에서 선언된 변수도 지역변수로 취급한다.
○ 변수 호이스팅 방식
var 에는 변수 호이스팅이 발생한다.
그러나 let과 const를 소스코드로 작성해서 사용해보면 에러가 나기때문에 호이스팅이 발생하지 않는다고 생각할 수도있는데, 그렇지 않고 호이스티잉 발생하지만 다른 방식으로 작동을 한다.
let 과 const로 변수를 선언할 경우 코드 실행전에 변수를 선언만 해두며 초기화는 코드 실행 과정에서 변수 선언문을 만났을 때 수행을 한다. 따라서 호이스팅이 발생하기는 하지만, 값을 참조할 수 없기 때문에 호이스팅이 발생하지 않는 것 처럼 보이는 것이다.
○ 전역객체 프로퍼티 여부
var로 선언된 변수는 전역객체의 프로퍼티이다 그러나 let과 const로 선언된 변수는 전역객체 프로퍼티가 아니다.
'웹 프로그래밍 > JavaScript' 카테고리의 다른 글
[JavaScript] 파도 효과 구현하기 (0) | 2021.10.07 |
---|---|
[JavaScript] 무한 스크롤 구현하기 (0) | 2021.09.26 |
[JavaScript] - 클로저(Closure) (1) | 2021.08.27 |
[JavaScript] - 호이스팅(Hoisting) (0) | 2021.08.26 |