जावास्क्रिप्ट में, कोई स्ट्रिंग के बराबर नहीं है null
।
हो सकता है कि आपको खाली स्ट्रिंग होने pass == null
पर सही होने की उम्मीद हो pass
क्योंकि आप जानते हैं कि ढीला समानता ऑपरेटर ==
कुछ प्रकार के प्रकार का कार्य करता है।
उदाहरण के लिए, यह अभिव्यक्ति सत्य है:
'' == 0
इसके विपरीत, सख्त समानता ऑपरेटर ===
कहता है कि यह गलत है:
'' === 0
यह देखते हुए ''
और 0
शिथिल समान हैं, आप यथोचित रूप से अनुमान लगा सकते हैं ''
और null
शिथिल समान हैं। हालांकि, वे नहीं हैं।
यह अभिव्यक्ति गलत है:
'' == null
किसी भी स्ट्रिंग की तुलना करने का परिणाम null
गलत है। इसलिए, pass == null
और आपके अन्य सभी परीक्षण हमेशा झूठे होते हैं, और उपयोगकर्ता को कभी भी चेतावनी नहीं मिलती है।
अपना कोड ठीक करने के लिए, प्रत्येक मान की तुलना खाली स्ट्रिंग से करें:
pass === ''
यदि आप निश्चित हैं कि pass
एक स्ट्रिंग है, pass == ''
तो भी काम करेगा क्योंकि केवल एक खाली स्ट्रिंग शिथिल स्ट्रिंग के बराबर है। दूसरी ओर, कुछ विशेषज्ञों का कहना है कि यह जावास्क्रिप्ट में हमेशा सख्त समानता का उपयोग करने के लिए एक अच्छा अभ्यास है जब तक कि आप विशेष रूप से उस प्रकार का जबरदस्ती नहीं करना चाहते हैं जो ढीला समानता ऑपरेटर करता है।
यदि आप यह जानना चाहते हैं कि मूल्यों के जोड़े क्या समान रूप से समान हैं, तो इस विषय पर मोज़िला लेख में तालिका "समानता तुलना" देखें ।