सबसे पहले, तथ्यों:
if (booleanValue)
सहित , किसी भी गैर-शून्य संख्या, किसी भी गैर-रिक्त स्ट्रिंग मान, किसी भी ऑब्जेक्ट या सरणी, आदि if
के किसी भी सत्य मूल्य के लिए कथन को संतुष्ट करेगा ...booleanValue
true
दूसरी ओर:
if (booleanValue === true)
यह केवल इस if
शर्त को पूरा करेगा यदि booleanValue
इसके बराबर है true
। कोई अन्य सत्य मूल्य इसे संतुष्ट नहीं करेगा।
दूसरी ओर यदि आप ऐसा करते हैं:
if (someVar == true)
फिर, जावास्क्रिप्ट क्या करेगा प्रकार true
के मिलान के लिए टाइप someVar
करें और फिर दो चर की तुलना करें। ऐसी बहुत सी स्थितियाँ हैं जहाँ यह संभव नहीं है कि कोई क्या करना चाहता है। इस वजह से, ज्यादातर मामलों में आप बचना चाहते हैं ==
क्योंकि नियमों का काफी लंबा सेट है कि कैसे जावास्क्रिप्ट दो प्रकारों को एक ही प्रकार का होगा और जब तक आप उन सभी नियमों को नहीं समझेंगे और सब कुछ अनुमान लगा सकते हैं कि जेएस दुभाषिया कब हो सकता है दिए गए दो अलग-अलग प्रकार (जो अधिकांश JS डेवलपर्स नहीं कर सकते हैं), आप शायद ==
पूरी तरह से बचना चाहते हैं ।
यह कितना भ्रमित हो सकता है इसका एक उदाहरण के रूप में:
var x;
x = 0;
console.log(x == true); // false, as expected
console.log(x == false); // true as expected
x = 1;
console.log(x == true); // true, as expected
console.log(x == false); // false as expected
x = 2;
console.log(x == true); // false, ??
console.log(x == false); // false
मान के लिए 2
, आपको लगता है कि 2
यह एक सत्य मूल्य है, इसलिए यह अनुकूल रूप से तुलना करेगा true
, लेकिन यह नहीं है कि कैसे प्रकार का काम करता है। यह दाहिने हाथ के मूल्य को बाएं हाथ के मूल्य से मिलान करने के true
लिए परिवर्तित कर रहा है इसलिए इसकी संख्या में परिवर्तित हो रहा है 1
इसलिए यह तुलना 2 == 1
कर रहा है जो निश्चित रूप से वह नहीं है जो आप चाहते हैं।
इसलिए, खरीदार सावधान रहें। यह ==
लगभग सभी मामलों में बचने के लिए सबसे अच्छा है जब तक आप स्पष्ट रूप से उन प्रकारों को नहीं जानते हैं जिनकी आप तुलना करेंगे और जानते हैं कि सभी संभव प्रकार के जबरदस्ती एल्गोरिदम कैसे काम करते हैं।
तो, यह वास्तव में booleanValue
आप के लिए अपेक्षित मूल्यों पर निर्भर करता है और आप कोड कैसे काम करना चाहते हैं। यदि आप पहले से जानते हैं कि यह केवल कभी एक true
या false
मूल्य होने वाला है, तो इसकी तुलना स्पष्ट रूप से करें
if (booleanValue === true)
सिर्फ अतिरिक्त कोड और अनावश्यक है
if (booleanValue)
अधिक कॉम्पैक्ट और यकीनन क्लीनर / बेहतर है।
यदि, दूसरी ओर, आप नहीं जानते कि क्या booleanValue
हो सकता है और आप परीक्षण करना चाहते हैं कि क्या यह वास्तव में true
बिना किसी अन्य स्वचालित प्रकार के रूपांतरण के साथ सेट है , तो
if (booleanValue === true)
न केवल एक अच्छा विचार है, बल्कि आवश्यक है।
उदाहरण के लिए, यदि आप .on()
jQuery के कार्यान्वयन को देखते हैं , तो इसका एक वैकल्पिक रिटर्न मान है। यदि कॉलबैक वापस आता है false
, तो jQuery स्वतः ईवेंट के प्रचार को रोक देगा। इस विशिष्ट मामले में, के बाद से jQuery ही रोक प्रचार करता है, तो चाहता है false
वापस आ गया था, वे वापसी मान स्पष्ट रूप से के लिए जाँच === false
क्योंकि वे नहीं चाहते undefined
या 0
या ""
या कुछ और भी तुलना को पूरा करने के कि स्वचालित रूप से होगा टाइप-परिवर्तित गलत पर।
उदाहरण के लिए, यहां कॉलबैक कोड को संभालने वाला jQuery इवेंट है:
ret = ( specialHandle || handleObj.handler ).apply( matched.elem, args );
if ( ret !== undefined ) {
event.result = ret;
if ( ret === false ) {
event.preventDefault();
event.stopPropagation();
}
}
आप देख सकते हैं कि jQuery स्पष्ट रूप से खोज रहा है ret === false
।
लेकिन, jQuery कोड में कई अन्य स्थान भी होते हैं, जहाँ कोड की इच्छा को देखते हुए एक सरल जाँच उपयुक्त है। उदाहरण के लिए:
// The DOM ready check for Internet Explorer
function doScrollCheck() {
if ( jQuery.isReady ) {
return;
}
...