공부 및 일상기록

[Javascript] var, let, const에 대해 설명 본문

개발/Javascript

[Javascript] var, let, const에 대해 설명

낚시하고싶어요 2023. 1. 5. 22:07

변수 선언방식

var

var는 중복 선언과 재할당이 가능하고 중복 선언한 경우 마지막에 할당된 값이 변수에 저장된다. 

 

let

let은 중복 선언이 불가능하고 재할당은 가능하다. 

 

const

const는 중복선언과 재할당 모두 불가능 하다.

 

스코프

var

var는 함수레벨 스코프를 갖는다. 따라서 함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수  외부에서는 참조할 수 없다. 함수 외부에서 선언한 변수는 모두 전역변수로 취급된다.

 

let, const

let과 const는 블록레벨 스코프를 갖는다. 따라서 if문, for문 등등 모든 코드 블록 내부에서 선언된 변수는 코드 블록 내에서만 유효하며 코드블록 외부에서는 참조할 수 없다. 코드 블록 내부에서 선언한 변수는 지역변수로 취급된다.

 

호이스팅

var, 함수선언문

var는 선언과 동시에 초기화 되며 호이스팅이 되면 초기화 되어있기 때문에 선언 전 사용시 undefined가 된다.

함수선언문은 함수 자체가 모두 호이스팅되어 선언 전에 사용이 가능하다.

 

let, const, 함수표현식

let과 const, 함수표현식은 선언된 상태로 호이스팅되어 초기화가 이뤄지지 않아 선언 전 사용시 참조에러가 발생한다.

따라서 해당 선언을 만나야만 초기화 및 할당이 되어, 선언 후 사용이 가능하다.

위처럼 변수의 선언과 초기화 사이에 일시적으로 변수값을 참조할 수 없는 구간을 Temporal Dead Zone이라고 한다.