JavaScript Hoisting

การยกขึ้น (Hoisting) คือการทำตามโดยเริ่มต้นของ JavaScript ที่จะยกขึ้นประกาศทุกตัว

ประกาศใน JavaScript จะถูกยกขึ้น

ใน JavaScript คุณสามารถประกาศตัวแปรหลังจากการใช้มัน

ความหมายคือ คุณสามารถใช้ตัวแปรก่อนที่จะประกาศมัน

ตัวอย่าง 1 และตัวอย่าง 2 ผลลัพธ์ที่เหมือนกัน:

ตัวอย่าง 1

x = 5; // จัดให้ x = 5
elem = document.getElementById("demo"); // ҵ
elem.innerHTML = x;                     // แสดง x ในองค์ประกอบ
var x; // ประกาศ x

Լ

ตัวอย่าง 2

var x; // ประกาศ x
x = 5; // จัดให้ x = 5
elem = document.getElementById("demo"); // ҵ
elem.innerHTML = x;                     // แสดง x ในองค์ประกอบ

Լ

เพื่อเข้าใจจุดนี้ คุณจะต้องเข้าใจวลี "hoisting"

Hoisting คือการทำตามโดยเริ่มต้นของ JavaScript ที่จะยกขึ้นทุกประกาศไปยังด้านบนสุดของสายงานปฏิบัติการปัจจุบัน (ยกขึ้นยังด้านบนสุดของสคริปต์หรือฟังก์ชันปัจจุบัน)

ใช้คำสั่งตัวแปร let และ const

ด้วย let หรือ const ตัวแปรที่ประกาศและค่าคงที่จะไม่ถูกยกขึ้น!

กรุณา JS Let / Const อ่านเพิ่มเติมเกี่ยวกับ let และ const ใน

การตั้งค่าใน JavaScript จะไม่ถูกยกขึ้น

JavaScript ยกขึ้นสำหรับประกาศเท่านั้น ไม่ใช่การตั้งค่า

ตัวอย่าง 1 และตัวอย่าง 2 ผลลัพธ์ไม่เหมือนกัน:

ตัวอย่าง 1

var x = 5; // x
var y = 7; // ตั้งค่า y
elem = document.getElementById("demo"); // ҵ
elem.innerHTML = x + " " + y;           // ʾ x y

Լ

ตัวอย่าง 2

var x = 5; // x
elem = document.getElementById("demo"); // ҵ
elem.innerHTML = x + " " + y;           // ʾ x y
var y = 7; // ตั้งค่า y 

Լ

ในตัวอย่างหลังสุด y ยังคงไม่ได้ถูกกำหนด นั่นสามารถบอกได้ไหม?

เพราะเป็นเพียงการประกาศ (var y) ไม่ใช่การตั้งค่า (=7) ที่ถูกนำขึ้นบนสุด

hoisting y ʹǰѾıʣΪδбʼ

ʾ 2 Ҳһ

ʵ

var x = 5; // x
var y;     // y
elem = document.getElementById("demo"); // ҵ
elem.innerHTML = x + " " + y;           // ʾ x y
y = 7;    // 7 y

Լ

ıȫ

Hoisting() Dzǿеʹ÷Dzע⵽ JavaScript һ

Dzи hoisting ʱ򣬳bug

Ϊиbug,һŷŴıÿһıʣ

ΪǼ JavaScript ʽıʽ룬維护ʵ

ʽе JavaScript Dzδıʹö

лʱµһuse strict