Skip to content

Latest commit

 

History

History
63 lines (41 loc) · 2 KB

Hoisting.md

File metadata and controls

63 lines (41 loc) · 2 KB

Hoisting

함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것


var result = sum(1,3); 
var sum = function(num1, num2){
   return console.log(num1+num2);
}
변형 전 코드

var result = undefined; 
var sum = undefined; 
result = sum(1,3); 
sum = function(num1, num2){
   return console.log(num1+num2);
}
호이스팅(Hoisting)으로 인해 (내부적으로) 변형된 코드

호이스팅이란

  • 자바스크립트 함수는 실행되기 전에 함수 안에 필요한 변수값들을 모두 모아서 유효 범위의 최상단에 선언한다

    • 함수 블록 안에서 유효하다
  • 함수 내에서 아래쪽에 존재하는 내용 중 필요한 값들을 끌어올리는 것이다

    • 실제로 코드가 끌어올려지는 것은 아니며, 내부적으로 끌어올려서 처리하는 것이다
    • 실제 메모리에서는 변화가 없다

호이스팅의 대상

  • var 변수 선언과 함수선언문에서만 호이스팅이 일어난다.

  • 호이스팅은 함수선언문과 함수표현식에서 서로 다르게 동작하기 때문에 주의해야 한다.


함수 선언문에서의 호이스팅

  • 함수선언문은 코드를 구현한 위치와 관계없이 자바 스크립트의 특징은 호이스팅에 따라 브라우저가 자바스크립트를 해석할 때 맨 위로 끌어 올려진다.


함수 표현식에서의 호이스팅

  • 함수표현식은 함수선언문과 달리 선언과 호출 순서에 따라서 정상적으로 함수가 실행되지 않을 수 있다

    • 함수 표현식에서는 선언과 할당의 분리가 발생한다.

호이스팅(Hoisting)이 일어나면 가독성이 떨어지며 유지보수가 어려워져 발생하지 않도록 해야한다.