[TIL] 호이스팅(Hoisting)

ShallWeDance·2021년 7월 25일
0

TIL

목록 보기
3/17
post-thumbnail

호이스팅(Hoisting)이란?

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

호이스팅

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

  • 자바스크립트 Parser가 함수 실행 전 해당 함수를 한 번 확인한다.
  • 함수 안에 존재하는 변수/함수선언에 대한 정보를 기억하고 있다가 실행시킨다.
  • 유효 범위: 함수 블록 {} 안에서 유효

❗️ 즉, 함수 내에서 아래쪽에 존재하는 내용 중 필요한 값들을 끌어 올리는 것이다.

  • 하지만 실제로 코드가 올려지는 것은 아니며, 자바스크립트 Parser 내부적으로 끌어올려서 처리하는 것이다.
  • 실제 메모리에서는 변화가 없다.

호이스팅의 대상

  • var 변수 선언과 함수선언문에서만 호이스팅이 일어난다.
    • var로 변수를 선언했을 때와 함수선언문에서만 위로 끌어올려 지며, 할당은 끌어 올려지지 않는다.
    • let/const로 변수를 선언했을 때와 함수표현식에서는 호이스팅이 발생하지 않는다.

Reference

[JavaScript] 호이스팅(Hoisting)이란

0개의 댓글