2011-09-14 8 views
19

मैं "संक्षेप त्रिगुट के लिए" पीएचपी के समर्थन के शौकीन हो गए, दूसरी अभिव्यक्ति को छोड़ते हुए:क्या जावास्क्रिप्ट PHP में कम टर्नरी (बल्कि, भिन्नता) का समर्थन करता है?

// PHP 

$foo = 'hello'; 
$bar = ''; 

echo $foo ?: 'world'; // hello 
echo $bar ?: 'world'; // world 

करता जावास्क्रिप्ट इस तरह वाक्य रचना किसी भी प्रकार का समर्थन करते हैं? मैंने ?: की कोशिश की है जिसके परिणामस्वरूप एक वाक्यविन्यास त्रुटि है। मैं बुलियन शॉर्ट सर्किट से अवगत हूं, लेकिन यह वर्तमान में जो कर रहा है उसके लिए यह संभव नहीं है; यह है:

// Javascript 

var data = { 
    key: value ?: 'default' 
}; 

कोई सुझाव? (मैं एक तुरंत लागू गुमनाम समारोह में लपेट सकता है, लेकिन है कि मूर्ख लगता है)

+0

@NullUserException - मैं jQuery का उपयोग कर रहा है, और जब तक मैं * कर * कैश मेरी चयन, गैर-सामान्य मान '.data()' के लिए एक कॉल का परिणाम है, और मैं था बस सुझाए गए सिंटैक्स (* और एक अस्थायी चर में मान को संग्रहीत करने से बचें *) का उपयोग करके दूसरी कॉल से बचने के लिए देख रहे हैं – Dan

उत्तर

35
var data = { 
    key: value || 'default' 
}; 
+0

निफ्टी! धन्यवाद @ सोमेग्य - हालांकि यह बहुत अजीब लगता है कि जावास्क्रिप्ट (* पढ़ा, कोई भी भाषा *) इस तरह की तुलना से एक गैर-बूलियन लौटाएगा। मेरा मतलब है, मुझे पता है कि यह ढीला टाइप किया गया है, लेकिन शीश। – Dan

+0

यदि आप बस डिफ़ॉल्ट मानों की अनुमति देने की कोशिश कर रहे हैं, ['$ .extend'] (http://api.jquery.com/jQuery.extend/) एक बहुत ही उपयोगी कार्य है। – zzzzBov

+1

@ ब्रैकवर्क्स: बुलियन ऑपरेटर कई (विशेष रूप से कार्यात्मक) भाषाओं में बूलियन वापस नहीं करते हैं। वे ऑपरेटर (या 'झूठी') के एक तरफ वापस आ जाएंगे। – NikiC

12

हाँ, || का उपयोग करें। PHP के विपरीत, जावास्क्रिप्ट || ऑपरेटर पहले गैर-झूठी मान वापस करेगा, सामान्यीकृत बूलियन नहीं।

foo || 'world' 
+0

धन्यवाद @ jimbojw - SomeGuy ने इसे हराया :) :) – Dan

+3

हाँ, ठीक है, यह वह कीमत है जिसे मैं सिर्फ उत्तर लिखने के बजाय समझाता हूं। – jimbojw

+1

'var foo = foo' = _ = – Leonid

0
var myFunc = function(foo) { 
    foo = foo || 'my default value for foo'; 
} 
संबंधित मुद्दे