호이스팅

  • 사전적 의미는 끌어올리다
  • (함수나 변수가) 상위 스코프의 가장 위로 끌어올려지는 것.

var, let, const

  • var : 호이스팅 (선언부만)
  • let, const : 호이스팅 X

함수의 호이스팅

  • 함수 선언문: 호이스팅
  • 함수 표현식: 호이스팅 X (var로 표현됐을 경우 선언부만 호이스팅 됨)

함수 표현식의 호이스팅

count();

var count = function() {
    console.log('count는 1이다.');
}

TypeError: count is not a function

  • 선언부(var count)만 호이스팅 됨. 변수 count는 undefined 상태.
  • 이 상태에서 호출되었으므로 count is not a function이라는 타입 에러가 뜬다.
var count = function() {
    console.log('count는 1이다.');
}

count();

'count는 1이다'

  • 함수가 정상적으로 호출됨
count();

let count = function() {
    console.log('count는 1이다.');
}

ReferenceError: count is not defined

  • let은 호이스팅 되지 않으므로 count is not defined라는 ReferenceError가 발생한다.

0개의 댓글