ใน JavaScript มีสองค่าซึ่งโดยทั่วไปจะบอกว่า 'ฉันไม่อยู่ - และundefined
null
คุณสมบัติที่โปรแกรมเมอร์ไม่ได้กำหนดอะไรจะเป็น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
แทนหรือไม่?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.
ไม่เพียง แต่undefined
พูดอย่างนั้น
undefined
ที่จะตอบคำถามสุดท้ายของคุณไม่มีคุณไม่ควรตั้งค่าคุณสมบัติ