सबसे पहले, तथ्यों:
if (booleanValue)
सहित , किसी भी गैर-शून्य संख्या, किसी भी गैर-रिक्त स्ट्रिंग मान, किसी भी ऑब्जेक्ट या सरणी, आदि ifके किसी भी सत्य मूल्य के लिए कथन को संतुष्ट करेगा ...booleanValuetrue
दूसरी ओर:
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;
}
...