หลังจากการวิจัยมีความแตกต่างอย่างมากระหว่างทั้งสอง
ทดสอบระบบปฏิบัติการ: Ubuntu
ทดสอบเบราว์เซอร์: Chrome
กรณีทดสอบ 1
console.log (a)
ReferenceRoror: A ไม่ได้กำหนดไว้
กรณีทดสอบ 2
var a
console.log (a)
ไม่มีการรายงานข้อผิดพลาด แต่เอาต์พุตไม่ได้กำหนดไว้
กรณีทดสอบ 2
var b = {};
console.log (ba)
ไม่มีการรายงานข้อผิดพลาด แต่เอาต์พุตไม่ได้กำหนดไว้
กรณีทดสอบ 3
ฟังก์ชัน C () {
-
var d = new C ();
console.log (da)
ไม่มีการรายงานข้อผิดพลาด แต่ไม่ได้กำหนดไว้
เกี่ยวกับ typeof
วัตถุทั้งหมดข้างต้นที่ใช้สำหรับการทดสอบจะถูกส่งกลับด้วยสตริง
เกี่ยวกับหรือการดำเนินการ ||
var d = a || 3
รายงานข้อผิดพลาดที่ไม่ได้กำหนดไว้
var a;
var d = a ||
ผลลัพธ์: D == 3
var c = 22 ||
C == 22
var c = false ||
C == 33
ถ้า (x) {
-
รายงานข้อผิดพลาด
var x
ถ้า (x) {
-
หากไม่ได้ดำเนินการ
สรุป:
มีสองประเภทที่ไม่ได้กำหนดใน JS แม้ว่าผลตอบแทนจะเป็นสตริง ("ไม่ได้กำหนด")
หลังจากคำจำกัดความ แต่ไม่มีการดำเนินการใด ๆ หรือคุณสมบัติที่ไม่ได้กำหนดของวัตถุมันเป็นของ undefined ที่สามารถใช้สำหรับการดำเนินการและสามารถใช้เป็นการดำเนินการเชิงตรรกะ
ตัวแปรประเภทที่สองนั้นไม่ได้กำหนดอย่างสมบูรณ์และไม่มีพื้นหลัง (XA แม้ว่า X จะไม่มีแอตทริบิวต์ แต่ให้ใบหน้า X) และไม่สามารถใช้เป็นประเภทข้อผิดพลาดเว้นแต่จะใช้ฟังก์ชัน typeof
การดำเนินการหรือการดำเนินการใน JS ไม่ได้ส่งคืนค่าบูล แต่ส่งคืนค่าที่คำนวณโดย JS ในเงื่อนไขสุดท้ายของทั้งสองด้าน 2 == 1 a || 1 รายงานข้อผิดพลาด
var a;
ฉันพบพจนานุกรมนี้และแปลมัน
ไม่ได้กำหนดไว้สามารถแปลเป็น: ไม่ชัดเจนนั่นคือฉันไม่รู้ว่าจะทำอย่างไร
และไม่ได้กำหนดไว้สามารถแปลเป็น undefined