null: หมายถึงไม่มีค่า;
ไม่ได้กำหนด: แสดงถึงตัวแปรที่ไม่ได้ประกาศ
หรือตัวแปรที่ประกาศแต่ไม่ได้กำหนดค่า
หรือคุณสมบัติของวัตถุที่ไม่มีอยู่จริง
ตัวดำเนินการ == ถือว่าทั้งสองมีความเท่าเทียมกัน หากคุณต้องการแยกความแตกต่างระหว่างทั้งสอง ให้ใช้ตัวดำเนินการ === หรือ typeof
————————————-เส้นแบ่งของความสับสน——————————————-
ใน JavaScript ค่าว่างและไม่ได้กำหนดเคยทำให้เกิดความสับสน การวิเคราะห์ต่อไปนี้จะช่วยให้คุณเข้าใจได้ชัดเจนยิ่งขึ้น (หรือทำให้คุณสับสนมากขึ้น):
- null คือคีย์เวิร์ด undefinition เป็นคุณสมบัติของอ็อบเจ็กต์ Global
- null คืออ็อบเจ็กต์ว่าง (ไม่มีคุณสมบัติและวิธีการใด ๆ ) ค่าประเภทที่ไม่ได้กำหนด ลองใช้รหัสต่อไปนี้:
document.writeln(typeof null); //return object
document.writeln(typeof unknown); //return undefinition- ในรูปแบบวัตถุ วัตถุทั้งหมดเป็นอินสแตนซ์ของ Object หรือคลาสย่อย ยกเว้นวัตถุ null:
document.writeln(null instanceof Object); //return false- null "ค่าเท่ากัน (==)" ถึงไม่ได้กำหนด แต่ไม่ใช่ "ค่าที่ตรงกัน (===)" ถึงไม่ได้กำหนด:
document.writeln(null == undefinition); // return true
document.writeln(null === undefinition); //return false- ทั้ง null และ undefinition สามารถแปลงประเภทเป็น false ในระหว่างการดำเนินการได้ แต่ไม่เท่ากับ false:
document.writeln(!null, !unknown); // กลับเป็นจริงจริง
document.writeln(null==false); //คืนค่าเท็จ
document.writeln(unknown==false); //return false