2009-05-06 15 views
6
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4; 

|| इस मामले में करो?
हमले में _4 जोड़ता है जो Attacklab.wmd_env.buttons है?|| क्या करता है ऑपरेटर करते हैं?

+4

कृपया शीर्षक को ठीक करें। – rkb

+4

वाह ने शीर्षक को सही करने के 7 प्रयास किए ... – Pool

उत्तर

18

|| जावास्क्रिप्ट में ऑपरेटर बाईं ओर मान देता है यदि वह मान false पर मूल्यांकन नहीं करता है, अन्यथा यह दाईं ओर मान देता है।

Mozilla's Core JavaScript 1.5 Reference से:

expr1 || expr2
रिटर्न expr1 अगर यह सच करने के लिए परिवर्तित किया जा सकता है; अन्यथा, expr2 देता है। इस प्रकार, जब बूलियन मानों के साथ उपयोग किया जाता है, तो || सही होता है यदि कोई ऑपरेंड सत्य है; अगर दोनों झूठे हैं, तो झूठी वापसी होती है।

इसलिए, इस मामले में, अगर Attacklab.wmd_env.buttons एक मूल्य नहीं है, यह _4 के लिए मूल्य तय करता है।

+0

यह अजीब बात है कि एमडीसी बल्कि संदिग्ध "रिटर्न एक्सप्र 1 का उपयोग करता है अगर इसे ** सच में परिवर्तित किया जा सकता है"। यह वास्तव में "रूपांतरित करने में सक्षम" के बारे में नहीं है, यह किस मूल्य अभिव्यक्ति रिटर्न के बारे में है। – kangax

8

तो Attacklab.wmd_env.buttonsnull या undefined है, यह डिफ़ॉल्ट मान _4 करने के लिए सेट कर दिया जाएगा।

12

यह

if(!Attacklab.wmd_env.buttons) 
    Attacklab.wmd_env.buttons = _4; 

यह डिफ़ॉल्ट मान प्रदान करने के लिए अच्छा है लेखन का एक आधुनिक तरीका है। ध्यान रखें कि न केवल null और undefined सशर्त ट्रिगर करेंगे, लेकिन 0, false और '', यानी बूलियन संदर्भों में false माना जाता है।

+0

+1 स्पष्ट रूप से सूचीबद्ध करने के लिए +1 मूल्यों का मूल्यांकन करने के लिए –

+0

और, ज़ाहिर है, 'NaN';) – kangax

+0

@ कंगैक्स: हाँ, सूची में एकमात्र चीज गायब थी (ईसीएमए -262, सेक्शन 9.2 देखें) – Christoph

4

|| ऑपरेटर जांचता है कि अभिव्यक्ति के बाईं ओर प्रदान किया गया मान गलत है (एक बूलियन संदर्भ में)। यदि ऐसा है तो यह अभिव्यक्ति के दाहिने तरफ से संकेतित वैकल्पिक मान देता है। अन्यथा यह मूल मूल्य देता है।

इसलिए उदाहरण के लिए निम्नलिखित कोड एक डिफ़ॉल्ट मान के लिए 'फू' स्थापित करेगा अगर यह रिक्त है:

 
Foo = Foo || "Default Value" 

यह कभी कभी वालों ऑपरेटर कहा जाता है। यह रूबी और पर्ल जैसे अन्य भाषाओं में समर्थित है। सी # है ?? ऑपरेटर जो एक ही काम करता है।

+0

तो, यह जवाब वह जानता है कि इसे क्या कहा जाता है, और अन्य लैंगगू इसका क्या उपयोग करते हैं, और सी # में भी विभिन्न वाक्यविन्यास ... और वह अभी भी नहीं जानता कि यह क्या करता है। – Beska

+0

अच्छा बिंदु, शायद मुझे अभी एक टिप्पणी छोड़नी चाहिए थी। वैसे भी, मेरा जवाब अपडेट कर दिया गया है। सही नाम के लिए –

+0

+1! कोई अन्य SO प्रश्न/उत्तर ऐसा नहीं करना चाहते थे ... मुझे Xquery में समतुल्य खोजने में मदद मिली (यह $ foo: = ($ foo, "default value") [1] उत्सुक है जो किसी भी व्यक्ति के लिए है)। –

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