함수 호이스팅

|

함수 호이스팅

자바스크립트의 Guru로 알려진 더글러스 크락포드는 함수 표현식만을 사용할 것을 권하고 있는데, 이는 함수 호이스팅때문이다.

함수 표현식이란?
var add = function (){} 이런 형태의 함수식을 말한다.


add(2,3) // 5      (1)

// 함수 선언문 형태로 add() 함수 정의    (2)
function add(x,y){
    return x + y;
}

add(3,4); // 7   (3)


위의 코드에서 add()함수가 정의되지 않았음에도 (2)에 정의된 add()함수를 호출하는 것이 가능하다.
이것은 함수가 자신이 위치한 코드에 상관없이 함수 선언문 형태로 정의한 함수의 유효 범위는 코드의 맨 처음부터 시작한다는 것을 확인 할 수 있다. 이것을 함수 호이스팅이라고 부른다.



add(2,3) // uncaught type error      (1)

// 함수 표현식 형태로 add() 함수 정의    (2)
var add = function add(x,y){
    return x + y;
}

add(3,4); // 7   (3)


함수 표현식 형태로 정의되어 있어 호이스팅이 일어나지 않는다.

호이스팅의 발생원인

함수 호이스팅이 발생하는 원인은 자바스크립트의 변수 생성초기화의 작업이 분리돼서 진행되기 때문이다.

….추후 계속 정리할 예정