ล่าสุดการพัฒนาเว็บบทเรียน
×

JS เกี่ยวกับการสอน

JS บ้าน JS บทนำ JS สถานที่ที่จะ JS ส่งออก JS วากยสัมพันธ์ JS งบ JS ความคิดเห็น JS ตัวแปร JS ผู้ประกอบการ JS คณิตศาสตร์ JS การมอบหมาย JS ชนิดข้อมูล JS ฟังก์ชั่น JS วัตถุ JS ขอบเขต JS เหตุการณ์ JS เงื่อนไข JS วิธีสตริง JS เบอร์ JS วิธีการจำนวน JS คณิตศาสตร์ JS วันที่ JS รูปแบบวันที่ JS วันวิธีการ JS แถว JS วิธีการอาร์เรย์ JS booleans JS เปรียบเทียบ JS เงื่อนไข JS สวิตซ์ JS ห่วง For JS ในขณะที่ห่วง JS หยุด JS ประเภทการแปลง JS นิพจน์ทั่วไป JS ข้อผิดพลาด JS แก้จุดบกพร่อง JS hoisting JS โหมดที่เข้มงวด JS คู่มือสไตล์ JS ปฏิบัติที่ดีที่สุด JS ข้อผิดพลาด JS ประสิทธิภาพ JS คำสงวน JS JSON

JS ฟอร์ม

แบบฟอร์มการตรวจสอบ รูปแบบ API

JS วัตถุ

นิยามวัตถุ คุณสมบัติของวัตถุ วิธีการของวัตถุ ต้นแบบวัตถุ

JS ฟังก์ชั่น

นิยามฟังก์ชั่น ค่าฟังก์ชัน ฟังก์ชั่นการภาวนา ปิดฟังก์ชั่น

JS HTML DOM

DOM แนะนำ DOM วิธีการ DOM เอกสาร DOM องค์ประกอบ DOM HTML DOM CSS DOM ภาพเคลื่อนไหว DOM เหตุการณ์ DOM EventListener DOM การเดินเรือ DOM โหนด DOM Nodelist

JS เบราว์เซอร์ BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS ตัวอย่าง

JS ตัวอย่าง JS HTML DOM JS HTML อินพุต JS HTML วัตถุ JS HTML เหตุการณ์ JS เบราว์เซอร์ JS ทดสอบ JS สรุป

JS คู่มืออ้างอิง

JavaScript วัตถุ HTML DOM วัตถุ


 

JavaScript Hoisting


Hoisting เป็นพฤติกรรมปกติของ JavaScript ในการเคลื่อนย้ายการประกาศไปด้านบน


ประกาศ JavaScript ยก

ใน JavaScript ตัวแปรสามารถประกาศหลังจากที่มันได้ถูกนำมาใช้

ในคำอื่น ๆ ; ตัวแปรที่สามารถนำมาใช้ก่อนที่จะได้รับการประกาศ

ตัวอย่างที่ 1 ให้ผลเช่นเดียวกับตัวอย่างที่ 2:

ตัวอย่างที่ 1

x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element

var x; // Declare x
ลองตัวเอง»

ตัวอย่างที่ 2

var x; // Declare x
x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element
ลองตัวเอง»

เพื่อทำความเข้าใจนี้คุณต้องเข้าใจคำว่า "hoisting"

Hoisting เป็นพฤติกรรมปกติของ JavaScript ในการเคลื่อนย้ายการประกาศทั้งหมดไปด้านบนของขอบเขตปัจจุบัน (ด้านบนของสคริปต์ปัจจุบันหรือฟังก์ชั่นในปัจจุบัน)


initializations JavaScript จะไม่ยก

JavaScript เพียงเครื่องชักรอกประกาศไม่ initializations

ตัวอย่างที่ 1 ไม่ได้ให้ผลเช่นเดียวกับตัวอย่างที่ 2:

ตัวอย่างที่ 1

var x = 5; // Initialize x
var y = 7; // Initialize y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y
ลองตัวเอง»

ตัวอย่างที่ 2

var x = 5; // Initialize x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

var y = 7; // Initialize y
ลองตัวเอง»

มันทำให้รู้สึกว่า Y จะไม่ได้กำหนดในตัวอย่างสุดท้าย?

เพราะนี่คือการประกาศเท่านั้น (var Y) ไม่เริ่มต้น (= 7) ถูกยกขึ้นไปด้านบน

เพราะการ hoisting , y ได้รับการประกาศก่อนที่มันจะถูกนำมาใช้ แต่เป็นเพราะ initializations ไม่ได้ยกค่าของ Y จะไม่ได้กำหนด

ตัวอย่างที่ 2 เป็นเช่นเดียวกับการเขียน:

ตัวอย่าง

var x = 5; // Initialize x
var y;     // Declare y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

y = 7;    // Assign 7 to y
ลองตัวเอง»

ประกาศตัวแปรของคุณที่ด้านบน!

Hoisting คือ (เพื่อนักพัฒนาจำนวนมาก) พฤติกรรมที่ไม่รู้จักหรือมองข้ามของ JavaScript

หากนักพัฒนาไม่เข้าใจ hoisting โปรแกรมอาจมีข้อบกพร่อง (ข้อผิดพลาด)

เพื่อหลีกเลี่ยงข้อผิดพลาดเสมอประกาศตัวแปรทั้งหมดที่จุดเริ่มต้นของทุกขอบเขต

ตั้งแต่นี้เป็นวิธี JavaScript ตีความรหัสก็มักจะเป็นกฎที่ดี

JavaScript ในโหมดที่เข้มงวดไม่อนุญาตให้มีตัวแปรที่จะใช้ถ้าพวกเขาจะไม่ได้ประกาศ
การศึกษา "use strict" ในบทต่อไป