सीधे शब्दों में कहें - कि कैसे &&
परिभाषित किया जाता है। जावास्क्रिप्ट में, a && b
a
लौटाता है यदि a
गलत है और b
है यदि a
सत्य है।
इसके विपरीत a || b
रिटर्न a
अगर a
truthy है और b
अगर a
falsy है।
यह सहजता से समझ में आता है - अगर a
a && b
में गलत है, तो शेष अभिव्यक्ति को पढ़ने में परेशानी क्यों है? आप पहले से ही जानते हैं कि पूरी बात झूठी है। तो बस झूठी वापसी करें। लेकिन जावास्क्रिप्ट a
वापस करने का निर्णय लेता है, जो कि कहीं भी वापस आने के लिए मूल्य false
बनाने के बजाय झूठा है।
यह सभी सी-शैली भाषाओं के लिए सामान्य शॉर्ट-सर्किट मूल्यांकन पर आधारित है।
यह जावास्क्रिप्ट में बहुत अधिक अभिव्यक्ति की अनुमति देता है। उदाहरण के इस पैटर्न के लिए:
var foo = function(opts) {
opts = opts || {}
// ...
}
एक वैकल्पिक पैरामीटर opts
लागू करता है। यदि opts
बिलकुल पास नहीं हुआ है, तो opts = opts || {}
opts
से {}
सेट करेगा, इसलिए शेष कोड को opts
नहीं पता था।
var x = a || b; // is equivalent to
var x;
if(a) {
x = a;
}
else {
x = b;
}
और
var y = a && b; // is equivalent to
var y;
if(!a) {
y = a;
}
else {
y = b;
}
इसलिए जावास्क्रिप्ट बहुत सी या जावा की तुलना में अधिक संक्षिप्त हो सकता है, क्योंकि साधारण if
बयान से बदला जा सकता है:
लंबे समय से हाथ में यह करने के लिए निम्न बराबर है ||
या &&
पूरी तरह से। कभी-कभी यह कोड को अधिक तेज़ और कम पठनीय बनाता है और पर्ल की तरह अधिक होता है, अन्य बार यह opts = opts || {}
जैसे नए जावास्क्रिप्ट पैटर्न की अनुमति देता है।
एक अन्य प्रयोग की तरह
var displayName = user.fullname || user.email;
जिसका मतलब है पैटर्न में है "उपलब्ध पूरा नाम यदि का उपयोग करें;। यदि नहीं, तो ईमेल में वापस आने" मुझे व्यक्तिगत रूप से यह अभिव्यक्तिपूर्ण और पठनीय लगता है, लेकिन यह आपके द्वारा प्राप्त जावास्क्रिप्ट समुदाय के किस हिस्से के आधार पर तर्कसंगत और अस्पष्ट है। इस तरह के उदाहरणों के कारण, और अनिवार्य रूप से तथ्य यह है कि सत्य मूल्य अधिक विविध होते हैं, तो शॉर्ट-सर्किट ||
का उपयोग करते हुए झूठी मान, शॉर्ट सर्किट &&
से आपके प्रश्न के मुकाबले कहीं अधिक आम है।
मैं यह इंगित करना चाहता हूं कि इस प्रकार का व्यवहार गतिशील भाषाओं में बहुत आम है जो आपको बुलियन संदर्भ (जावास्क्रिप्ट, पायथन, लुआ, आदि) में किसी भी मूल्य का उपयोग करने देता है। सी भी एक अजीब कोने का मामला है क्योंकि इसमें अलग बुलियन प्रकार नहीं है और इसलिए इसके लिए इंक का उपयोग करता है। – hugomg