ก่อนอื่นฉันต้องการพูดถึงว่าฉันรู้วิธีisNaN()และการNumber.isNaN()ทำงาน ฉันกำลังอ่านคู่มือที่ชัดเจนโดย David Flanagan และเขายกตัวอย่างวิธีการตรวจสอบว่ามีค่าNaN:
x !== x
ซึ่งจะส่งผลtrueถ้าหากมีxNaN
แต่ตอนนี้ฉันมีคำถาม: ทำไมเขาใช้การเปรียบเทียบที่เข้มงวด เพราะดูเหมือนว่า
x != x
ทำงานในลักษณะเดียวกัน มันมีความปลอดภัยที่จะใช้ทั้งสองรุ่นหรือฉันหายไปค่าบางอย่าง (s) ใน JavaScript ที่จะกลับมาtrueสำหรับx !== xและfalseสำหรับx != x?
NaNไม่ใช่ประเภทที่ไม่ซ้ำกันมันเป็นตัวเลข มันเป็นคุณค่าที่ไม่เหมือนใคร
===กับ NaN เพื่อให้ประเด็นที่ว่าแนนนั้นไม่เท่ากับตัวของมันเอง เขาไม่ได้ "ผิด" เขากำลังทำแบบฝึกหัดการสอนซึ่งแสดงว่ามันไม่ได้ผล
!==เช็คมากกว่า!=เช็ค เท่าที่ผมทราบไม่มีค่าอื่น ๆx != xที่ แต่มีกลุ่มนักพัฒนา JavaScript ที่แตกต่างกันสองกลุ่ม: กลุ่มที่ชอบ!=และกลุ่มที่ชอบ!==ไม่ว่าจะเป็นเพื่อความเร็วความชัดเจนความหมาย ฯลฯ