호이스팅

- var 선언문, function 선언문 등 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성

- 변수 선언 단계초기화 단계할당 단계와 분리되어 진행되기 대문에 호이스팅이 발생한다.

변수 호이스팅

- var 키워드 변수 생성과정 -

1. 선언 단계 : 변수 객체에 var 키워드로 선언된 변수를 등록한다. 이 변수 객체는 스코프 참조 대상이 된다.
2. 초기화 단계 : 변수 객체에 등록된 var 키워드 변수를 메모리에 할당한다. var 키워드 변수값undefined로 초기화 된다.
3. 할당 단계 : 초기화 단계에서 undefined로 초기화된 값을 실제값으로 할당한다.

var 키워드 변수 호이스팅 예제

    // var 키워드로 선언된 변수는 선언 단계와 초기화 단계가 한번에 이루어진다.
    // 즉 (1)보다 먼저 scope에 변수가 등록되고 
    // 변수는 메모리 공간을 확보한 후 undefined로 초기화된다.
    
    // var a; // 호이스팅
    console.log(a); // (1) undefined
    var a = 10; // (2)
    console.log(a) // (3) 10

함수 호이스팅

- 함수 선언문 호이스팅 O

- 함수 표현식 호이스팅 X

    // testA : 함수 선언문
    // testB : 함수 표현식
    
    testA(2) // 2
    testB(4) // testB is not a function
    
    function testA(num) {
        console.log(num)
    }
    var testB = function (num) {
        console.log(num)
    }
    
    testB(4) // 4

'Javascript' 카테고리의 다른 글

[Javascript] 스코프(Scope)  (0) 2021.07.08
[Javascript] 프로토타입(Prototype)  (0) 2021.07.07
[Javascript] 함수(function)  (0) 2021.06.30
[Javascript] 객체와 변경불가성(Immutability)  (0) 2021.06.22
[Javascript] 객체  (0) 2021.06.21

+ Recent posts