호이스팅(Hoisting)이란?
- 함수 안에 있는 선언들을 모두 끌어올려 해당 함수 유효 범위의 최 상단에 선언하는 것을 말한다.
- 자바스크립트 함수는 실행되기 전에 함수 안에 필요한 변수값들을 모두 모아서 유효 범위의 최상단에 선언한다.
js에서 다음과 같은 코드를 실행하면 결과가 다음과 같이 나온다.
undefined
test
결과를 보면 알 수 있듯이, test 변수를 정의 하기 전에 console.log(test)를 하였는데도 오류가 나지 않고 undefind 값이 출력되는 것을 볼 수 있다.
왜 그렇게 출력이 되냐면 자바스크립트엔진에서 var test = 'test'를 var test와 test='test'로 분리하여 변수 선언부를 함수 상단부로 끌어올려서 선언해버리므로 오류가 나지않고 출력이 되는 것이다.
즉 함수 내에서는 선언한 위치와 관계없이 항상 최상단으로 호이스팅되므로 함수를 선언하기 전에 호출을 하여도 아무 문제가 없는 것이다.
단 함수 호이스팅은 선언 방식이 함수 선언식인 경우에만 적용된다.
'웹 프로그래밍 > JavaScript' 카테고리의 다른 글
[JavaScript] 파도 효과 구현하기 (0) | 2021.10.07 |
---|---|
[JavaScript] 무한 스크롤 구현하기 (0) | 2021.09.26 |
[JavaScript] - var, let, const (0) | 2021.08.30 |
[JavaScript] - 클로저(Closure) (1) | 2021.08.27 |