본문 바로가기

웹 프로그래밍/JavaScript

[JavaScript] - var, let, const

● 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로 선언된 변수는 전역객체 프로퍼티가 아니다.