12
เหตุใดจึงมีค่า "null" ใน JavaScript
ใน JavaScript มีสองค่าซึ่งโดยทั่วไปจะบอกว่า 'ฉันไม่อยู่ - และundefinednull คุณสมบัติที่โปรแกรมเมอร์ไม่ได้กำหนดอะไรจะเป็นundefinedแต่เพื่อให้คุณสมบัตินั้นกลายเป็นคุณสมบัติnullนั้นnullจะต้องถูกกำหนดให้กับคุณสมบัตินั้นอย่างชัดเจน ฉันเคยคิดว่ามีความจำเป็นnullเพราะundefinedเป็นค่าดั้งเดิมและnullวัตถุ มันไม่ได้ถึงแม้ว่าtypeof nullจะให้ผลผลิต'object': ที่จริงทั้งสองมีค่าดั้งเดิม - ซึ่งหมายความว่าค่าundefinedมิได้nullสามารถกลับมาจากการทำงานของผู้สร้างขณะที่ทั้งสองจะถูกแปลงเป็นวัตถุที่ว่างเปล่า (หนึ่งที่มีการโยนข้อผิดพลาดความล้มเหลวจงประกาศในการก่อสร้าง) ทั้งคู่ยังประเมินfalseในบริบทบูลีน ข้อแตกต่างที่แท้จริงที่ฉันสามารถคิดเป็นที่หนึ่งประเมินเพื่อNaNการอื่น ๆ เพื่อ0ในบริบทที่เป็นตัวเลข เหตุใดจึงมีทั้งสองอย่างundefinedและnullเพียงแค่สร้างความสับสนให้โปรแกรมเมอร์ที่ตรวจสอบไม่ถูกต้องnullเมื่อพยายามค้นหาว่ามีการตั้งค่าคุณสมบัติหรือไม่? สิ่งที่อยากทราบคือหากใครมีตัวอย่างที่สมเหตุสมผลที่จำเป็นต้องใช้nullที่ไม่สามารถแสดงundefinedแทนได้ ดังนั้นฉันทามติทั่วไปดูเหมือนจะundefinedหมายความว่า 'ไม่มีคุณสมบัติดังกล่าว' ในขณะที่nullหมายถึง 'ทรัพย์สินนั้นมีอยู่จริง แต่ไม่มีค่า' ฉันสามารถใช้ชีวิตแบบนั้นได้หากการใช้งาน JavaScript บังคับใช้พฤติกรรมนี้จริง - แต่undefinedเป็นค่าดั้งเดิมที่ถูกต้องอย่างสมบูรณ์ดังนั้นจึงสามารถกำหนดให้กับคุณสมบัติที่มีอยู่เพื่อทำลายสัญญานี้ได้อย่างง่ายดาย ดังนั้นหากคุณต้องการตรวจสอบว่ามีคุณสมบัติอยู่หรือไม่คุณต้องใช้ตัวinดำเนินการหรือhasOwnProperty()อย่างไรก็ตาม อีกครั้ง: การใช้ประโยชน์สำหรับค่าที่แยกต่างหากสำหรับundefinedและnullคืออะไร ฉันใช้จริงundefinedเมื่อต้องการยกเลิกการตั้งค่าคุณสมบัติที่ไม่ได้ใช้งานอีกต่อไป แต่ไม่ต้องการdeleteใช้ ฉันควรใช้nullแทนหรือไม่?