มี 2 ค่าพิเศษใน JavaScript ที่แสดงถึงการขาดข้อมูล: NULL และไม่ได้กำหนด โดยส่วนตัวแล้วฉันคิดว่าความแตกต่างระหว่างค่าพิเศษทั้งสองนี้สามารถเข้าใจได้จากมุมมองต่อไปนี้:
1.Null แสดงถึงคอนเทนเนอร์ที่เก็บข้อมูล (เช่นตัวแปรที่ได้รับการกำหนดค่ามาก่อน) แต่เนื้อหาในคอนเทนเนอร์ว่างเปล่า
2. ไม่ได้กำหนดหมายความว่าไม่มีคอนเทนเนอร์ที่ใช้ในการจัดเก็บข้อมูล
NULL ใน JavaScript ไม่แตกต่างจาก NULL ในภาษาการเขียนโปรแกรมอื่น ๆ ส่วนใหญ่ มันถูกใช้โดยทั่วไปเพื่อระบุว่าค่าข้อมูลนั้นว่างเปล่า ในขณะที่อยู่ใน JavaScript นิพจน์จะส่งคืนผลลัพธ์ที่ไม่ได้กำหนดไว้ในสถานการณ์ต่อไปนี้:
1. ตัวแปรที่ไม่เคยได้รับการกำหนดค่า
2. เข้าถึงค่าคุณสมบัติที่ไม่มีอยู่ในวัตถุ
3. เข้าถึงสมาชิกที่ไม่มีอยู่ในอาร์เรย์
4. เรียกฟังก์ชั่นโดยไม่มีคำสั่งส่งคืน
5. เรียกฟังก์ชั่นที่มีคำสั่ง Return ว่างเปล่า ("return;")
ในความเป็นจริงเช่นอินฟินิตี้และน่านที่ไม่ได้กำหนดเป็นตัวแปรส่วนกลางในจาวาสคริปต์และยังสามารถกำหนดค่าอื่น ๆ ใน eCmascript 3. ECMAScript 5 แก้ไขข้อผิดพลาดนี้และตั้งค่าตัวแปรที่ไม่ได้กำหนดให้อ่านอย่างเดียว
สำหรับการเปรียบเทียบระหว่าง NULL และ Undefined สามารถใช้ตัวดำเนินการที่สอดคล้องกันได้ === หากใช้ตัวดำเนินการปกติ ==
การคัดลอกรหัสมีดังนี้:
console.log (null == undefined); // true
console.log (null === ไม่ได้กำหนด); // false
ในระหว่างกระบวนการเขียนโปรแกรมหากคุณต้องการกำหนดค่า NULL ให้กับตัวแปรโดยทั่วไปจะใช้ค่า NULL แทนที่ไม่ได้กำหนด เหตุผลคือ:
1. โดยทั่วไปไม่ได้กำหนดจะถือว่าขาดข้อมูลในระดับระบบและระดับการรายงานข้อผิดพลาด
2. NULL โดยทั่วไปถือว่าเป็นระดับการเขียนโปรแกรมและค่าข้อมูลที่ระดับการดำเนินการเชิงตรรกะนั้นว่างเปล่า
หากการแปลงประเภทมีส่วนร่วมในโปรแกรมผลลัพธ์ของ null และ undefined เมื่อแปลงเป็นประเภทตัวเลขจะแตกต่างกัน:
1. ผลลัพธ์ของการแปลงที่ไม่ได้กำหนดเป็นจำนวนคือ NAN
2. ผลลัพธ์ของการแปลง NULL เป็นหมายเลขคือ 0
เป็นเรื่องที่ควรค่าแก่การกล่าวถึงว่าผลลัพธ์ของการแปลงสตริงที่ว่างเปล่าและอาร์เรย์ที่ว่างเปล่าเป็นตัวเลขก็คือ 0
สำหรับสาเหตุที่สองค่าที่แสดงถึง "ไม่" ได้รับการออกแบบใน JavaScript คุณสามารถอ้างถึงโพสต์บล็อกของ Ruan Yifeng
การทดลอง
ในรหัสทดลองต่อไปนี้ผลการแสดงออกจะไม่ได้กำหนด:
การคัดลอกรหัสมีดังนี้:
var a;
console.log (a);
ตัวอย่างฟังก์ชั่น (x) {
this.x = x;
-
var s = ตัวอย่างใหม่ ();
console.log (sx)
console.log (S.NotExistVariable);
var n = [2,3,4];
console.log (n [8]);
ฟังก์ชั่นทดสอบ () {
// ไม่มีค่าส่งคืนสำหรับฟังก์ชันนี้
-
console.log (ทดสอบ ());
ฟังก์ชั่น test2 () {
กลับ;
-
console.log (test2 ());