Search

호이스팅(Hoisting)

개요

JavaScript, TypeScript의 동작 특성 중 하나로 변수와 함수 선언이 실제 코드 실행 전에 위로 끌어올려지는 것처럼 동작하는 현상을 의미한다.
자바스크립트 엔진이 코드를 해석할 때, 코드의 선언 부분(변수 선언부, 함수 선언부)만을 먼저 처리하여 해당 블록 또는 스코프의 맨 위에 위치한 것처럼 동작한다.
console.log(x); // undefined var x = 10; // 위 코드는 사실상 아래처럼 동작한다. var x; console.log(x); // undefined x = 10;
TypeScript
복사

var, let, const의 호이스팅 차이

js, ts에는 변수 선언을 var, let, const 키워드를 사용해 변수를 선언할 수 있으며, 각각 호이스팅 동작이 다르다.

1. var 키워드팅

var로 선언된 변수는 스코프의 최상단으로 호이스팅된다.
호이스팅으로 인해 변수는 undefined로 초기화된 상태가 된다.
블록 스코프가 아닌 함수 스코프를 가진다.