본문 바로가기

웹 프로그래밍/JavaScript

[JavaScript] - 호이스팅(Hoisting)

호이스팅(Hoisting)이란?

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

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

 

js에서 다음과 같은 코드를 실행하면 결과가 다음과 같이 나온다.

 

undefined
test

결과를 보면 알 수 있듯이, test 변수를 정의 하기 전에 console.log(test)를 하였는데도 오류가 나지 않고 undefind 값이 출력되는 것을 볼 수 있다.

왜 그렇게 출력이 되냐면 자바스크립트엔진에서 var test = 'test'를 var test와 test='test'로 분리하여 변수 선언부를 함수 상단부로 끌어올려서 선언해버리므로 오류가 나지않고 출력이 되는 것이다.

 

즉 함수 내에서는 선언한 위치와 관계없이 항상 최상단으로 호이스팅되므로 함수를 선언하기 전에 호출을 하여도 아무 문제가 없는 것이다.

 

단 함수 호이스팅은 선언 방식이 함수 선언식인 경우에만 적용된다.