2012-01-16 15 views
63

मुझे पता है कि php 5.3 के बजाय इस निरर्थक त्रिगुट ऑपरेटर सिंटैक्स का उपयोग करने:जावास्क्रिप्ट आशुलिपि त्रिगुट ऑपरेटर

startingNum = startingNum ?: 1 
:

startingNum = startingNum ? startingNum : 1 

... हम अपने त्रिगुट ऑपरेटरों जहां लागू करने के लिए एक आशुलिपि सिंटैक्स का उपयोग कर सकते हैं

और मैं जावास्क्रिप्ट में त्रिगुट ऑपरेटर के बारे में पता:

startingNum = startingNum ? startingNum : 1 

... लेकिन वहाँ एक shortha है nd?

धन्यवाद दोस्तों!

उत्तर

102
var startingNumber = startingNumber || 1; 

ऐसा कुछ जो आप खोज रहे हैं, जहां यह अपरिभाषित है, तो यह डिफ़ॉल्ट है?

var foo = bar || 1; // 1 
var bar = 2; 
foo = bar || 1;  // 2 

वैसे, इस परिदृश्य का एक बहुत, वस्तुओं सहित के लिए काम करता है:

var foo = bar || {}; // secure an object is assigned when bar is absent 
+1

मुझे लगता है कि, सी # –

+0

है वास्तव में आज सुबह उछल गई। फिक्स्ड, लेकिन ध्यान देने के लिए धन्यवाद। –

+1

क्या आपका मतलब '??' के बजाय '||' नहीं है? –

13

|| पहले truthy मूल्य इसे का सामना करना पड़ता वापस आ जाएगी, और इसलिए एक कोलेसिंग ऑपरेटर, समान के रूप में इस्तेमाल किया जा सकता है सी # के ??

startingNum = startingNum || 1; 
+0

@Web_Designer - कोई समस्या नहीं। –

+0

मुझे आपकी स्पष्टीकरण अन्य लोगों की तुलना में अधिक पसंद है – ajax333221

+0

@ AJAX333221 - धन्यवाद! –

10

हाँ, वहाँ है:

var startingNum = startingNum || 1; 

सामान्य तौर पर, नीचे दिए तरीक़े (के रूप में the documentation ने उल्लेख किया) में expr1 || expr2 काम करता है:

रिटर्न expr1 यह true में बदला जा सकता है; अन्यथा, expr2 देता है। इस प्रकार, जब Boolean मानों के साथ उपयोग किया जाता है, ||true देता है यदि कोई ऑपरेंड true है; यदि false दोनों हैं, तो false पर लौटें।

+0

क्या यह कहना सही नहीं है कि 'अगर सत्य है' बनाम 'यदि सत्य का मूल्यांकन किया जाता है'? – JaredPar

+3

@ जेरेडपायर: अस्पष्टता से बचने के लिए, मैंने मोज़िला डेवलपर नेटवर्क से अपने मूल विस्तृत स्पष्टीकरण को बदल दिया है। यह कम संदिग्ध होना चाहिए। – Tadeck

1
var startingNum = startingNum || 1; 

इस मामले में, आप OR ऑपरेटर का उपयोग कर सकते हैं।

0

उपरोक्त उत्तरों सही हैं। जावास्क्रिप्ट, निम्नलिखित बयान में:

startingNum = startingNum ? otherNum : 1 

रूप

startingNum = otherNum || 1 

अन्य परिदृश्य यहां शामिल नहीं है अगर आप मूल्य झूठी वापस जाने के लिए जब मिलान नहीं चाहते व्यक्त किया जा सकता। इस के लिए जावास्क्रिप्ट आशुलिपि है:

startingNum = startingNum ? otherNum : 0 

लेकिन यह व्यक्त किया जा सकता के रूप में

startingNum = startingNum && otherNum 

बस को कवर करने के मामले में एक और दूसरों परिदृश्य में अधिक सामान्यकृत जवाब देख रहे थे चाहता था।

0
startingNum = startingNum || 1 

आप शून्य वाले हालत है, तो

startingNum = startingNum ? startingNum : null 

जैसे आप '& &'

startingNum = startingNum && startingNum 
0

उपयोग कर सकते हैं एक त्रिगुट की तरह बनाने के लिए:

boolean_condition ? true_result : false_result 

जावास्क्रिप्ट में, आप कर सकते हैं:

(boolean_condition && true_result) || false_result; 

उदाहरण:

(true && 'green') || 'red'; 
=> "green" 
(false && 'green') || 'red'; 
=> "red" 
संबंधित मुद्दे