JavaScript มีหลายวิธีในการระบุว่าไม่มีค่า หน้านี้
อธิบายวิธีที่ใช้กันมากที่สุด 2 วิธี ได้แก่ ประเภทข้อมูล null และ undefined
null
คีย์เวิร์ด null แสดงถึงการไม่มีค่าที่กำหนดไว้โดยเจตนา null
เป็นค่าพื้นฐาน แม้ว่าโอเปอเรเตอร์ typeof จะแสดงผลว่า null เป็นออบเจ็กต์
นี่คือข้อผิดพลาดที่เกิดขึ้น
จาก JavaScript เวอร์ชันแรกและถูกปล่อยทิ้งโดยเจตนา
ไม่ได้กำหนดเพื่อหลีกเลี่ยงการละเมิดลักษณะการทำงานที่คาดไว้ในเว็บ
typeof null
> object
คุณอาจกำหนดตัวแปรเป็น null
โดยมีความคาดหวังว่ารูปแบบนี้จะแสดงให้เห็นถึงมูลค่าที่กำหนดให้กับ
ในสคริปต์ หรือค่าที่ไม่ได้ระบุไว้อย่างชัดเจน นอกจากนี้คุณยังกำหนดnull
ลงในการอ้างอิงที่มีอยู่เพื่อล้างค่าก่อนหน้า
undefined
undefined เป็นค่าพื้นฐานที่กำหนดให้กับตัวแปร
ที่เพิ่งประกาศ หรือกับค่าผลลัพธ์ของการดำเนินการที่
ไม่ได้แสดงผลเป็นค่าที่มีความหมาย เช่น ตอนที่คุณประกาศ
ฟังก์ชันใน Developer Console ของเบราว์เซอร์
function myFunction() {}
> undefined
ฟังก์ชันจะแสดงผล undefined อย่างชัดเจนเมื่อคำสั่ง return
ไม่แสดงค่า
(function() {
return;
}());
> undefined
การเปรียบเทียบระหว่าง null กับ undefined
แม้ว่า undefined และ null จะมีฟังก์ชันที่ทับซ้อนกัน แต่ก็มี
เพื่อวัตถุประสงค์ต่างๆ ในความหมายที่เข้มงวดที่สุด null หมายถึงค่า
ตั้งใจกำหนดเป็น "ว่าง" และ undefined แสดงถึงการไม่มีค่าที่กำหนดไว้
null และ undefined มีค่าเท่ากันแต่ไม่เท่ากัน
โอเปอเรเตอร์ความเท่าเทียมแบบหลวมจะเชื่อมโยงตัวถูกดำเนินการของประเภทต่างๆ เป็นบูลีน
ซึ่งทำให้ null และ undefined เป็น false ทั้งคู่ โอเปอเรเตอร์ความเท่าเทียมที่เข้มงวด
จะถือว่าตัวถูกดำเนินการของข้อมูลประเภทต่างๆ ไม่เท่ากัน
null == undefined
> true
null === undefined
> false
undefined แตกต่างจากคีย์เวิร์ดที่สงวนไว้ null คือพร็อพเพอร์ตี้ของ
ออบเจ็กต์ส่วนกลาง การออกแบบนี้
ตัดสินใจได้ในช่วงแรกของการพัฒนา JavaScript และยังช่วยให้เบราว์เซอร์รุ่นเก่า
เขียนทับ undefined อย่างสมบูรณ์ ในเบราว์เซอร์สมัยใหม่ คุณยังสามารถใช้
undefined เป็นตัวระบุในขอบเขตที่ไม่ใช่ส่วนกลาง โดยจะลบล้างค่าของตัวระบุภายใน
ขอบเขตของการประกาศนั้น ไม่ใช้ undefined เป็นตัวระบุ ทั้งนี้
อาจทำให้เกิดลักษณะการทำงานที่ไม่คาดคิด และมีแนวโน้มที่จะทำให้ผู้บำรุงรักษาในอนาคตสับสน
ฐานของโค้ด
ตรวจสอบความเข้าใจ
typeof null จะส่งคืนอะไร
objectundefinedprimitivestring