2012-05-05 12 views
12

इन दोनों के बीच क्या अंतर है? रूबी से, मुझे apple ||= walrus पर इस्तेमाल किया जाता है, यदि सेब शून्य हो तो केवल वालर के बराबर सेट होता है। ऐसा लगता है कि जेएस/सीएस में ऐसा ही लगता है? = ऐसा ही लगता है।कॉफीस्क्रिप्ट में "|| =" ऑपरेटर "? =" से भिन्न कैसे होता है?

apple = 0 
walrus = 9 
apple ?= walrus // outputs 0 
apple ||= walrus // outputs 9 

वाट

उत्तर

18

सबसे अच्छा काम करने के परिणामस्वरूप जेएस को देखना होगा।

Coffeescript:

apple = 0 
walrus = 9 
apple ?= walrus // outputs 0 
apple ||= walrus // outputs 9 

जावास्क्रिप्ट:

var apple, walrus; 
apple = 0; 
walrus = 9; 
if (apple == null) apple = walrus; 
apple || (apple = walrus); 

आप देख सकते हैं, ?= स्पष्ट रूप से जाँच करता है कुछ null या जे एस में undefined है। यह ||= से बहुत अलग है जो कि इस बात पर निर्भर करता है कि apple एक गलत मूल्य है।

थोड़ा और विस्तार करने के लिए apple ||= walrusapple = apple || walrus के बराबर है, इसलिए सच्चाई सेब का कोई भी मूल्य तर्क को शॉर्ट सर्किट करेगा और सेब के मूल्य को नहीं बदलेगा।

+0

उस अंतिम पंक्ति ने मुझे इसे समझने के लिए मिला। धन्यवाद। – Chris

+0

@ क्रिस कूल, मदद करने में खुशी हुई। – loganfsmyth

+2

(आकस्मिक पाठक के लिए: 'अपरिभाषित == null' जावास्क्रिप्ट में सच है' undefined' और 'null', दो झूठी-y मूल्यों, * केवल * x' जो' एक्स == अशक्त में परिणाम 'के मूल्यों कर रहे हैं। 'सच किया जा रहा है) –

3

?=अस्तित्व ऑपरेटर है: क्या मुझे confuses यह है। यह null और undefined के खिलाफ जांच करता है।

||= सिर्फ वैरिएबल के मान को "गलत नहीं" होने की जांच करता है, अगर मुझे सही याद है ... तो इसका मतलब है कि 0 गलत है।

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