개발/Javascript

Javascript Hoisting(호이스팅)

ebkim 2024. 4. 8. 19:57

Hoisting(호이스팅) 이란?

함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효범위의 최상단에 선언하는 것  
변수의 경우 var로 선언한 변수만 호이스팅이 적용된다. (let, const 변수는 적용되지 않음)

 

예시

적용 전

console.log("hello");
var myname = "KIM";
let myname = "KIM222";

 

적용 후

var myname;
console.log("hello");
myname = "KIM";
let myname = "KIM222";

 

 

Hoisting 함수 적용

함수의 선언문은 적용되나, 표현식은 적용되지 않는다.

 

적용 전

foo();
foo2();

function foo() {
    console.log("TEST");
}

var foo2 = function() {
    console.log("TEST2");
}

 

적용 후

var foo2;
function foo() {
    console.log("TEST");
}

foo();
foo2();     // ERROR!!!

foo2 = function() {
    console.log("TEST2");
}

 

 

Hoisting 우선순위

변수 선언문이 함수 선언문보다 위로 끌어올려진다.