null และไม่ได้กำหนด

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 จะส่งคืนอะไร

object
undefined
primitive
string