Hoisting อธิบายคุณสมบัติของ Javascript ที่ตีความโดยเบราว์เซอร์และคุณลักษณะที่ใช้ไม่มาก
เมื่อตีความ Javascript เบราว์เซอร์จะวางขอบเขตตัวแปรระดับฟังก์ชั่นไว้ที่จุดเริ่มต้นของฟังก์ชัน ตัวอย่าง:
function AddTwoAndTwo() {
var two = 2;
var result = two + two;
return result;
}
ในโค้ดที่โพสต์ตัวแปรทั้งสอง "สอง" และ "ผลลัพธ์" มีอยู่ที่จุดเริ่มต้นของขอบเขตฟังก์ชัน (เห็นได้ชัดว่ามีการประกาศไว้ที่นั่น) อย่างไรก็ตามเนื่องจากเบราว์เซอร์ "ยก" ตัวแปรดังต่อไปนี้จะกลายเป็นรหัสจาวาสคริปต์ตามกฎหมาย .
function AddTwoAndTwo() {
result = 5;
alert(result);
var two = 2;
var result = two + two;
return result;
}
ผลกระทบสุทธิที่นี่คือคุณมีตัวแปรที่ใช้งานก่อนที่คุณจะประกาศพวกเขาและที่อาจทำให้เกิดความสับสนโดยเฉพาะอย่างยิ่งกับตัวแปรขอบเขตทั่วโลก ตัวอย่าง:
var result = 6;
function AddTwoAndTwo() {
alert(result); // should this be 6 or undefined?
var two = 2;
var result = two + two;
return result;
}
เพื่อหลีกเลี่ยงความสับสนให้ประกาศตัวแปรของคุณที่ด้านบนของฟังก์ชั่น