호이스팅

yj j·2023년 12월 1일

호이스팅이란, 함수 선언부가 유효범위 최상단으로 끌어올려지는 현상입니다.

따라서 함수 호출이 함수 선언보다 앞서 있어도 정상적으로 실행됩니다.

play();     //호출

//선언
function play() {
  console.log("Play!");
}

그러나 이 호이스팅 현상은 함수 선언에서만 작동하고, 함수 표현에서는 작동하지 않습니다.

play();

const play = function() {
  console.log("Play!");
}
//에러 발생

함수는 주로 복잡한 구현으로 이루어져 있고, 함수의 이름만으로 어떤 기능을 하는 것인지 추상적으로 알 수 있습니다.
호이스팅은 복잡한 구현부를 나중에 읽을 수 있게 해주는 방법입니다.

또 주의할 점은, 함수 선언할당 연산자를 통해 할당되면 함수 표현이 됩니다.

dance();

const play = function dance() { //dance는 play로 대체되었습니다
  console.log("Play!");
}
//ReferenceError: dance is not defined 오류 발생

기명 함수를 다른 이름으로 할당하게 되면, 기존의 이름을 더이상 쓸 수 없게 됩니다.

profile
꿈꾸는 사람

0개의 댓글