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