สรุป: == แปลงประเภทก่อนจากนั้นเปรียบเทียบมัน === ตัดสินประเภทก่อนถ้ามันไม่ใช่ประเภทเดียวกันมันเป็นเท็จโดยตรง
=== หมายความว่าทั้งสองด้านของการเปรียบเทียบจะต้องเหมือนกันอย่างแน่นอน
การแจ้งเตือน (0 == ""); // TrueAlert (0 == FALSE); // TrueAlert ("" == FALSE); // จริง การแจ้งเตือน (0 === ""); // falsealsealert (0 === เท็จ); // falsealsealert ("" === เท็จ); // เท็จพูดคุยเกี่ยวกับ === นี่ค่อนข้างง่ายกฎการเปรียบเทียบเฉพาะมีดังนี้:
1. หากประเภทต่างกันพวกเขาจะ [ไม่เท่ากัน]
2. ถ้าทั้งคู่เป็นค่าตัวเลขและมีค่าเท่ากันแล้ว [เท่ากับ]; (! ข้อยกเว้น) คือถ้าอย่างน้อยหนึ่งในนั้นคือน่านแล้ว [ไม่เท่ากัน] (เพื่อตรวจสอบว่าค่าเป็น NAN คุณสามารถใช้ ISNAN () เพื่อตัดสินได้เท่านั้น)
3. ถ้าทั้งคู่เป็นสตริงและตัวละครในแต่ละตำแหน่งจะเหมือนกันแล้ว [ความเท่าเทียม]; มิฉะนั้น [ไม่เท่ากัน]
4. ถ้าทั้งสองค่าเป็นจริงหรือทั้งสองอย่างนั้นเป็นเท็จแล้ว [เท่ากัน]
5. ถ้าค่าทั้งสองอ้างถึงวัตถุหรือฟังก์ชั่นเดียวกัน [ความเท่าเทียม]; มิฉะนั้น [ไม่เท่ากัน]
6. ถ้าค่าทั้งสองเป็นโมฆะหรือทั้งสองไม่ได้กำหนดแล้ว [เท่ากัน]
พูดคุยเกี่ยวกับ == กฎการเปรียบเทียบเฉพาะมีดังนี้:
1. หากประเภทค่าทั้งสองนั้นเหมือนกันให้ดำเนินการเปรียบเทียบ === การเปรียบเทียบและกฎการเปรียบเทียบจะเหมือนกับข้างต้น
2. หากประเภทค่าทั้งสองนั้นแตกต่างกันพวกเขาอาจจะเท่ากัน การแปลงประเภทจะดำเนินการตามกฎต่อไปนี้แล้วเปรียบเทียบ:
. หากมีค่าว่างและอีกอันหนึ่งไม่ได้กำหนดไว้แล้ว [เท่ากัน]
ข. หากหนึ่งเป็นสตริงและอื่น ๆ เป็นค่าตัวเลขให้แปลงสตริงเป็นค่าตัวเลขแล้วเปรียบเทียบ
ค. หากค่าใดเป็นจริงให้แปลงเป็น 1 และเปรียบเทียบ; หากค่าใดเป็นเท็จให้แปลงเป็น 0 และเปรียบเทียบ
d. หากหนึ่งเป็นวัตถุและอีกอันหนึ่งเป็นตัวเลขหรือสตริงให้แปลงวัตถุเป็นค่าของประเภทฐานแล้วเปรียบเทียบ แปลงวัตถุเป็นประเภทพื้นฐานและใช้วิธี toString หรือ valueof คลาส JS Core ในตัวจะพยายามที่จะให้คุณค่าก่อนที่จะ toString; ข้อยกเว้นคือวันที่ซึ่งใช้การแปลง ToString วัตถุหลักที่ไม่ใช่ JS สมมติว่า (มันลำบากกว่านี้ฉันไม่เข้าใจมาก)
ก. ชุดค่าผสมอื่น ๆ (อาร์เรย์อาร์เรย์ ฯลฯ ) คือ [ไม่เท่ากัน]