Hoisting เป็นเทคนิค 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