호이스팅(Hoisting) 이란?

c_yj·2022년 7월 27일
0
post-thumbnail

호이스팅이란 ❓

JavaScript에서 호이스팅(hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미한다 즉 변수나 함수의 선언이 코드 최상단으로 끌어올려진 것처럼 동작하는 현상을 말한다.

변수 호이스팅 🟣

var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화합니다. 반면 let과 const로 선언한 변수의 경우 호이스팅 시 변수를 초기화하지 않습니다.

console.log(a); // undefined

var a = 4;

console.log(a) // 4

함수 호이스팅 '🔴

함수 선언문으로 정의한 함수는 함수 선언문 이전에 호출할 수 있다. 함수 선언문을 통해 암묵적으로 생성된 식별자는 함수 객체로 초기화된다.

console.log(add(2,5));; // 7
console.log(sub(2,5));; // TypeError: sub is not a function

function add(x,y) {
  return x + y;
}

// 함수 표현식
var sub = function (x,y) {
  return x - y;
}

함수 표현식으로 함수를 정의하면 함수 호이스팅이 발생하는 것이 아니라 변수 호이스팅이 발생한다.

profile
FrontEnd Developer

0개의 댓글