programming/JavaScript&jQuery

[JavaScript] 호이스팅이란?

LeeBorn 2019. 11. 4. 00:00
반응형

1. 호이스팅이란?

호이스팅이란?

 

Hoisting

호이스팅(hoisting)은 ECMAScript® 2015 언어 명세 및 그 이전 표준 명세에서 사용된 적이 없는 용어입니다. 호이스팅은 JavaScript에서 실행 콘텍스트(특히 생성 및 실행 단계)가 어떻게 동작하는가에 대한 일반적인 생각으로 여겨집니다. 하지만 호이스팅은 오해로 이어질 수 있습니다.

developer.mozilla.org

간단하게 설명하면,

자바스크립트에서 함수 및 변수 선언이 코드 순서상 먼저 일어나지 않아도,

실행할 수 있는 것이다.

예를 들어, 호이스팅을 변수 및 함수 선언이 물리적으로 작성한 코드 상단으로 옮겨지는 것으로 가르치지만, 실제로는 그렇지 않습니다. 변수 및 함수 선언은 컴파일 단계에서 메모리에 저장되지만, 코드에서 입력한 위치와 정확히 일치한 곳에 있습니다.

정확하게 코드가 물리적으로 이동하는 것은 아니라고 한다.

 

2. 호이스팅의 예

1
2
3
4
5
6
7
8
9
10
11
12
13
// hoisting1-1
hoisting();
 
function hoisting(){
    alert("hoisting!");
}
 
// hoisting1-2
function hoisting(){
    alert("hoisting!");
}
 
hoisting();
cs

 

hoisting1-1과 hoisting1-2의 차이는 단지 함수 호출의 순서다.

1-1은 함수 호출을 먼저 하고, 함수 작성을 아래에 한 경우이고,

1-2는 함수 작성을 먼저 하고, 함수 호출을 아래에 한 경우이다.

1-1의 경우 컴파일 단계에서, 1-2처럼 함수 선언이 가장 위로 올라가고,

실행은 두 코드가 똑같이 되는 것이다.

 

참조

반응형