/ / एक टर्नरी ऑपरेटर या सिर्फ शॉर्ट-सर्किट मूल्यांकन का उपयोग करने के बीच अंतर? - जावास्क्रिप्ट, टर्नरी-ऑपरेटर, शॉर्ट-सर्कुलेटिंग

एक टर्नरी ऑपरेटर या केवल शॉर्ट-सर्किट मूल्यांकन का उपयोग करने के बीच अंतर? - जावास्क्रिप्ट, टर्नरी-ऑपरेटर, शॉर्ट सर्किटिंग

हाल ही में शॉर्ट-सर्किट मूल्यांकन और आयायह थोड़ा उलझन में था क्योंकि मैं केवल पिछले सप्ताह प्रोग्रामिंग में मिला था। जो मुझे समझ में आता है अगर पहले डबल पाइप के सही होने से पहले क्या होता है तो यह बंद हो जाएगा और यह मूल्यांकन नहीं करेगा कि डबल पाइप के बाद क्या आता है उदाहरण के लिए:

उदाहरण 1:

var a = true;
var b = a || {};

इसलिए मुझे लगता है कि यदि कोई मौजूद है तो बी को असाइन करेंअन्यथा b एक वस्तु के बराबर है। मुझे समझ नहीं आ रहा है कि मैं इसका उपयोग कहां करूंगा और यह टर्नरी ऑपरेटर के लिए अलग कैसे होगा, isn "t शॉर्ट सर्किट मूल्यांकन समान:

उदाहरण 2:

var a = true;
var b = (a) ? a : {};

एक उदाहरण 2 के रूप में 1 का उपयोग क्यों करेगाisn "किसी भी धीमे लिखने के लिए या एक के ऊपर एक के उपयोग की गति लाभ है? या यह सिर्फ एक मूर्खतापूर्ण सवाल है और शायद मैं कुछ याद कर रहा हूँ अगर कोई मेरे लिए यह स्पष्ट कर सकता है कि यह बहुत अच्छा होगा।

उत्तर:

जवाब के लिए 2 № 1

ऐसे कई तरीके हैं जिनसे शॉर्ट सर्किट ऑपरेटर शुद्धता और प्रदर्शन को प्रभावित कर सकते हैं।

महत्वपूर्ण बात दूसरे ओपेरा के साइड इफेक्ट्स या प्रदर्शन हिट से बच रही है।

शॉर्ट सर्किटिंग केवल सुरक्षित होने पर दूसरे ऑपरेंड का मूल्यांकन करके त्रुटियों से बच सकती है:

var a = a && someFunctionThatWillThrowIfAIsNull(a);

एक धीमी गति से कार्य करने से बचा जा सकता है यदि दूसरा कार्य तेजी से चल रहा है तो दूसरा परिणाम निरर्थक हो सकता है:

var a = someFastFunction() || someSlowFunction();

जवाब के लिए 0 № 2

यहां एक उदाहरण है अलग-अलग usages (पहले पैरामीटर के आधार पर)। उनके काम करने के तरीके को समझने के लिए उनमें से प्रत्येक के लिए कंसोल की जाँच करें।

console.log(""" || {}:", "" || {});
console.log("1 || {}:", 1 || {});
console.log("0 || {}:", 0 || {});
console.log("true || {}:", true || {});
console.log("false || {}:", false || {});
console.log("[] || {}:", [] || {});

console.log("");

console.log("("") ? "" : {}:", ("") ? "" : {});
console.log("(1) ? 1 : {}:", (1) ? 1 : {});
console.log("(0) ? 0 : {}:", (0) ? 0 : {});
console.log("(true) ? true : {}:", (true) ? true : {});
console.log("(false) ? false : {}:", (false) ? false : {});
console.log("([]) ? "" : {}:", ([]) ? [] : {});

console.log("");

console.log(""" && {}:", "" && {});
console.log("1 && {}:", 1 && {});
console.log("0 && {}:", 0 && {});
console.log("true && {}:", true && {});
console.log("false && {}:", false && {});
console.log("[] && {}:", [] && {});