Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 함수 호이스팅

<시간/>

호이스팅은 코드 실행이 시작되기 전에 변수와 함수 선언을 해당 범위의 맨 위로 이동하는 JavaScript 기술입니다. 범위 내에서 함수나 변수가 선언된 위치에 관계없이 범위의 맨 위로 이동합니다.

호이스팅은 할당이 제자리에 남아 있는 동안에만 선언을 이동한다는 점에 유의하십시오.

예시

console.log(functionBelow("Hello"));
function functionBelow(greet) {
   return `${greet} world`;
}
console.log(functionBelow("Hi"));

출력

Hello world
Hi world

함수 선언은 호출된 후에 있었지만 여전히 호출되었습니다. 이것은 함수 호이스팅 덕분에 가능했습니다.

또한 변수와 같은 기능을 할당할 때는 작동하지 않습니다.

console.log(functionBelow("Hello"));
var functionBelow = function(greet) {
   return `${greet} world`;
}
console.log(functionBelow("Hi"));

이것은 오류와 함께 실패합니다:functionBelow는 함수가 아닙니다

var를 제거하면 다음 오류와 함께 실패합니다. functionBelow가 정의되지 않았습니다

var로 선언할 때 컨텍스트에서 변수로 호이스트되었습니다. 그러나 그것은 여전히 ​​​​정의되지 않은 채로 남아있었습니다. 이것을 가변 호이스팅이라고 합니다. 이 속성으로 인해 익명 및 화살표 함수는 JavaScript에서 호이스팅되지 않습니다.