2012-06-28 19 views
10

यह मेरे लिए कोई मतलब नहीं है, लेकिन मुझे लगता है मैं एक कोड इस का उपयोग करते हुए देखा है:क्या आप एक परिवर्तनीय घोषणा के लिए एक शर्त जोड़ सकते हैं?

var abc = def || ghi; 

मेरा प्रश्न है, इस लिए मान्य है? क्या हम एक परिवर्तनीय घोषणा के लिए एक शर्त जोड़ सकते हैं? मुझे कल्पना है कि जवाब नहीं है, लेकिन मेरे पास यह मेरे दिमाग के पीछे है कि मैंने एक बार कोड में कुछ समान देखा।

उत्तर

17

यह abc को def का मूल्य देता है, तो यह नहीं 'को जोड़ सकते हैं टी falsy (यानी false, null, undefined, 0 या एक खाली स्ट्रिंग), या ghi का मान यदि नहीं है।

यह बराबर है करने के लिए:

var abc; 
if (def) abc = def; 
else abc = ghi; 

यह आमतौर पर विकल्प के लिए प्रयोग किया जाता है:

function myfunc (opts) { 
    var mything = opts.mything || "aaa"; 
} 

आप myfunc({mything:"bbb"}) फोन यदि यह मूल्य आप दे उपयोग करता है। यदि आप कुछ भी प्रदान नहीं करते हैं तो यह "aaa" का उपयोग करता है।

इस मामले में, आदेश फोन करने वाले पूर्ण पैरामीटर को छोड़ जाने के लिए में, हम भी समारोह

opts = opts || {}; 
+0

+1। यह कहना अधिक सटीक हो सकता है कि "def 'सत्य पर मूल्यांकन करता है", क्योंकि यदि यह '0' है, खाली स्ट्रिंग,' झूठी 'इत्यादि। तो' abc' को 'ghi' का मान प्राप्त होगा। –

3

हाँ, आप शर्त चर घोषणा

आप इसे इस तरह उपयोग कर सकते हैं,

function greet(person) { 
    var name = person || 'anonymouse'; 
    alert('Hello ' + name); 
} 
greet('jashwant'); 
greet();​ 

jsfiddle demo

0

ठीक है के साथ शुरू किया जा सकता था, यह कुछ है की तरह, आप या तो जांच कोई एक सही । सच्चाई वापस आ जाएगा। :)

var abc = def || ghi; 

के बराबर है:

var abc = return (def == true) or (ghi == true) 
+2

सावधान। आपके उत्तर का तात्पर्य है कि यह ऑपरेशन हमेशा एक बूलियन मान निर्दिष्ट करता है। यह ** केवल ** मामला है यदि 'def' और 'ghi' बूलियन मान हैं। सभी मामलों में, 'abc'' ghi' (जो भी मान है) का मान मान लेगा _unless 'def' evalutes को सच_। यदि 'def' "हैलो" है, तो एबीसी "हैलो" (बूओलान नहीं) होगा। यदि 'def' गलत/खाली/शून्य/अपरिभाषित/आदि है, और 'ghi'" दुनिया "है, तो' abc'" दुनिया "(फिर, बूलियन नहीं) होगा। – user113215

6

कोड वर abc = def || ghi;

है

if (def) { //where def is a truthy value 
    var abc = def; 
} else { 
    abc = ghi; 
} 

के रूप में एक ही बात आप एक अगर बयान की तरह एक शर्त करना चाहते हैं?

if (xxx==="apple") { 
    var abc = def; 
} else { 
    abc = ghi; 
} 

जो के रूप में एक त्रिगुट ऑपरेटर के रूप में लिखा है:

var abc = (xxx==="apple") ? def : ghi; 
+0

मैंने कल जो पढ़ा (जावास्क्रिप्ट उछाल) का एक जीवंत उदाहरण देखा। भले ही आपके पहले उदाहरण में 'def' गलत है,' abc' वैश्विक नहीं है। क्या मैं सही हू ? – Jashwant

+0

'abc' वैश्विक हो सकता है, बस यह कहां परिभाषित किया जाता है पर निर्भर करता है। – epascarello

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