JavaScript

[JavaScript] var let const 차이점

hid1 2022. 8. 8. 17:56

 

 

자바스크립트에서 변수를 선언할 때 키워드로는 var, let, const가 있다.

let과 const는 ES6에 추가된 키워드이다.

 

var let const
Function-level scope
재선언 가능
재할당 가능
Block-level scope
재선언 불가능
재할당 가능
Block-level scope
재선언 불가능
재할당 불가능

 

Function-level scope와 Block-level scope


Function-level scope

함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 

Block-level scope

모든 코드 블록 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 

 

 

재선언


let과 const를 사용시, 변수를 재선언을 한다면 에러가 뜬다.

Uncaught SyntaxError: Identifier '변수명' has already been declared

 

 

재할당


let은 재할당이 가능하지만 const는 재할당이 안된다.

const 사용시 선언과 동시에 할당이 이루어져야 한다.

 

 

 

변수의 생성과정


변수는 선언 > 초기화  > 할당의 단계를 건친다.

var

선언과 초기화 단계가 한 번에 이루어진다.

undefined로 초기화

=> 변수 선언문 이전에 변수를 참조할 수 있다. 

let

선언과 초기화 단계가 분리되어 진행된다.

스코프에 변수를 등록(선언)하지만 초기화는 변수 선언문에 도달했을 때 이루어진다.

=> 초기화 이전에 접근하려하면 ReferenceError 발생

 

 

(스코프의 시작 지점~초기화 시작 지점 구간을 ‘일시적 사각지대(Temporal Dead Zone, TDZ)’라고 부른다)

 

 

 


 

 

let, const | PoiemaWeb

ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것이었다. var 키워드로 선언된 변수는 아래와 같은 특징이 있다. 이는 다른 언어와는 다른 특징으로 주의를 기울이지 않으면

poiemaweb.com

 

반응형