[JavaScript] var, let, const 비교하기 #2

ParkCode·2024년 1월 22일

자바스크립트

목록 보기
2/20

1. 스코프

var: 함수 스코프(Function Scope)를 가집니다. 함수 내에서 선언된 var 변수는 함수 전체에서 유효하며, 블록( {} ) 안에서 선언해도 블록 밖에서 접근 가능합니다.

let, const: 블록 스코프(Block Scope)를 가집니다. {} 블록(예: if 문, for 문, 함수) 내에서 선언된 변수는 해당 블록 내에서만 유효하며, 블록 밖에서는 접근할 수 없습니다.

2. 재할당 및 재선언

var: 재할당과 재선언이 모두 가능합니다.

let: 재할당은 가능하지만 재선언은 불가능합니다.

const: 재할당과 재선언 모두 불가능합니다. 따라서 선언과 동시에 값을 할당해야 합니다. const로 선언된 객체나 배열의 속성은 변경할 수 있습니다.

3. 호이스팅

호이스팅(Hoisting)은 변수나 함수 선언이 스코프의 맨 위로 끌어올려지는 것처럼 동작하는 것을 의미합니다.

var: 선언과 초기화가 분리되어 선언만 호이스팅됩니다. 따라서 변수가 선언되기 전에 접근하면 undefined 값이 할당됩니다.

let, const: var와 마찬가지로 선언은 호이스팅되지만, 초기화 과정이 호이스팅되지 않습니다. 이로 인해 변수 선언 전에 접근하려 하면 ReferenceError가 발생합니다. 이 현상을 "TDZ(Temporal Dead Zone)"라고 부릅니다.

profile
프론트엔드 개발자

0개의 댓글