Hoisting은 코드를 읽을 때 변수와 함수가 먼저 선언되는것을 말한다.


자바스크립트 코드는 크게 두 단계를 거쳐 읽힌다.

1. Creation Phase

2. Execution Phase


Creation Phase에서는 변수/객체, 스코프 체인 생성과 'this' 변수의 값을 결정한다. 

Execution Phase에서는 현재 Execution Context를 생성한 함수의 코드들을 한줄 한줄 읽어낸다.


다음 코드를 보며 이해해보자.

1
2
3
4
5
foo();
function foo(){
    console.log(x);
}
var x = 'hello!';
cs

위 코드는 undefined를 출력한다.

c언어였다면 1번라인부터 오류가 출력되었을것이다.

하지만 자바스크립트에서는 변수와 함수를 Hoisting해 현재 Execution Context의 함수 내부 코드와 변수 할당을 실행하기 전에 변수와 함수를 먼저 선언한다.

따라서 실제로는 1번라인이 실제로 싫행되기 전에 foo함수와 x변수의 선언이 완료된 후 나머지 코드를 실행 하는것이다. 





' > JavaScript' 카테고리의 다른 글

-JavaScript- this  (0) 2019.03.27
-JavaScript- Execution Context와 Execution Stack  (0) 2019.03.20
-JavaScript- 배열(array)  (0) 2019.03.13
JavaScript 문자열 기초 사용  (0) 2019.01.24
-JavaScript- 비교연산자 '=='과 '==='의 차이  (0) 2019.01.04

+ Recent posts