=== (strict equality) बिना किसी conversion के value और type दोनों की तुलना करता है। == (loose equality) पहले type coercion करता है, जिससे चौंकाने वाले परिणाम मिलते हैं।
js
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
=== (strict equality) बिना किसी conversion के value और type दोनों की तुलना करता है। == (loose equality) पहले type coercion करता है, जिससे चौंकाने वाले परिणाम मिलते हैं।
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
Coercion के नियम स्पष्ट नहीं होते और बग पैदा करते हैं। उदाहरण के लिए, [] == ![] का परिणाम true होता है (एक कुख्यात quirk)। आप शायद ही कभी चाहेंगे कि तुलना के दौरान JavaScript चुपचाप आपके पीछे types को convert करे।
हमेशा === (और !==) का उपयोग करें। एक आम, जानबूझकर किया गया अपवाद null या undefined को एक साथ जाँचना है:
if (value == null) { ... } // true for BOTH null and undefined — a deliberate idiom
बाकी हर चीज़ के लिए, strict equality तुलनाओं को पूर्वानुमेय रखता है। Objects की तुलना करने के लिए आपको deep-equality check की ज़रूरत होती है (वे reference से तुलना करते हैं, इसलिए {a:1} === {a:1} का परिणाम false होता है)।