2011-08-19 34 views
17

कभी कभी मैं इस तरह जावास्क्रिप्ट कोड कुछ में देखें:जावास्क्रिप्ट में इनिट ऑब्जेक्ट का उपयोग करके || ऑपरेटर

var myObj = myObj || {}; 

तो, क्या वास्तव में यहाँ होता है? मुझे लगता है || ऑपरेटर सच या गलत देता है, लेकिन यह सही नहीं है।

उत्तर

25

|| ऑपरेटर बाएं ऑपरेंड को वापस देता है यदि यह सत्य के रूप में मूल्यांकन करता है, अन्यथा यह सही संचालन का मूल्यांकन करता है और देता है। दूसरे शब्दों में, a || ba ? a : b के समतुल्य है, सिवाय इसके कि a केवल एक बार मूल्यांकन किया जाता है।

+1

+1 को जावास्क्रिप्ट में * नल कोलेसिंग ऑपरेटर * भी कहा जाता है http://stackoverflow.com/questions/476436/null-coalescing-operator-for-javascript/476445#476445 – naveen

+1

नहीं, इसका उपयोग केवल * प्रतिस्थापन * सी # के नल कोलेसिंग ऑपरेटर ('??') के लिए। :) मैंने कभी नहीं सुना है '||' जिसे "नल कोलेसिंग ऑपरेटर" कहा जाता है; यह हमेशा "तार्किक या" ऑपरेटर रहा है। – cdhowie

+0

सहमत हुए। ओपी के पिछले प्रश्नों से वह एएसपी.नेट पृष्ठभूमि से हैं और यही कारण है कि यह स्पष्टीकरण। – naveen

2

यह myObj को तब तक शुरू करता है जब तक कि यह पहले से परिभाषित नहीं होता है।

1

|| एक शॉर्ट सर्किट ऑपरेटर है। यदि पहला ऑपरेंड सत्य का मूल्यांकन करता है तो दूसरे का मूल्यांकन नहीं किया जाता है।

इस प्रकार जे एस a || b तरह C# a ?? b

0

अगर myObj अपरिभाषित है या नल तो यह जो एक नया खाली ऑब्जेक्ट

तो myObj है या तो myObj अगर यह बनाता है || के दाईं ओर अभिव्यक्ति का मूल्यांकन करता है कुछ है यदि myObj रिक्त है

मैं आशा है कि आप समझते हैं मैं क्या मतलब अशक्त या एक खाली वस्तु नहीं है

+1

यदि 'myObj' का मान झूठा या 0 या NaN या खाली स्ट्रिंग था तो यह वैरिएबल को तब भी एक नई ऑब्जेक्ट असाइन करने का कारण बन जाएगा। यह ** ** ** अनिर्धारित या शून्य नहीं है। जावास्क्रिप्ट में 6 झूठी चीजें हैं। –

+0

@ रे टोल: अतिरिक्त के लिए धन्यवाद – Fender

1

या सेशन (||) होगा पहले गैर-खाली/झूठे पैरामीटर को वापस करें।

मामले में निर्दिष्ट, अगर myObj झूठी या अशक्त है, यह एक खाली वस्तु पर सेट हो जाएगा आप वस्तु है कि प्राप्त करने के लिए इस संरचना का उपयोग कर सकते

1

({} कोष्ठक वस्तुओं को बनाने के लिए किया जाता है) null, undefined, आदि। यह उन मामलों में उपयोग किया जाता है जहां आप कोड में myObj का उपयोग करते हैं, जिसके लिए इसे ऑब्जेक्ट होना आवश्यक है। अगर, किसी कारण से, myObj इस लाइन से पहले अपरिभाषित है, इसे फिर से असाइन करने से इसे undefined या null छोड़ दिया जाता है, इस स्थिति में इसे {} असाइन किया जाएगा।

आप के रूप में इस के बारे में सोच सकते हैं:

// If the object is already defined 
if (myObj) 
    var myObj = myObj; 
// It was undefined or null, so assign an empty object to it. 
else 
    var myObj = {}; 
2

को समझने के लिए || ऑपरेटर, आइए पहले एक बिल्कुल मूल उदाहरण देखें।

var bar = false, 
foobar = 5, 
foo = bar || foobar; // foo = 5 

इस मामले में, foo केवल foobar का मूल्य आवंटित किया जाएगा यदि बार falsy माना जाता है: तार्किक OR ऑपरेटर एक परिभाषित चर के लिए एक डिफ़ॉल्ट मान प्रदान करने के लिए इस प्रकार के रूप में इस्तेमाल किया जा सकता है। एक झूठा मूल्य 0, झूठी, अपरिभाषित, शून्य, NaN या खाली (उदा। "" के बराबर माना जा सकता है।

संबंधित मुद्दे

 संबंधित मुद्दे