प्रलेखन का कहना है इस बारे में ?
:
CoffeeScript के अस्तित्व ऑपरेटर ?
सच रिटर्न जब तक एक चर अशक्त या अपरिभाषित है, जो यह अनुरूप करने के लिए बनाता है रूबी के nil?
तो कोर्स यह कहेंगे "नो टैको!":
taco = undefined
if taco?
console.log "fiesta!"
else
console.log "No taco!"
आपका taco
स्पष्ट रूप से undefined
है इसलिए taco?
गलत है।
कॉफीस्क्रिप्ट स्पष्ट रूप से चर घोषित करता है ताकि ?
का जावास्क्रिप्ट फॉर्म संदर्भ निर्भर हो। उदाहरण के लिए, अगर आप सिर्फ केवल यह कहना:
if taco?
console.log "fiesta!"
else
console.log "No taco!"
आप देखेंगे कि taco?
typeof taco !== "undefined" && taco !== null
हो जाता है। आप अभी भी "null
" चेक (एक कड़े फॉर्म में) देखते हैं, लेकिन वहां भी है "var taco
" typeof
के साथ जांचें; ध्यान दें कि typeof taco
परीक्षण taco = undefined
के लिए भी जांच करता है, इसलिए एक कठोर !==
परीक्षण का उपयोग यह देखने के लिए किया जा सकता है कि taco
null
है।
आप इस कहते हैं:
मैंने देखा है कि coffeescript की मेरी संस्करण केवल something !== null
को यह संकलन किया गया था लेकिन यह है कि यह क्या कर रहा है, यह वास्तव में something != null
संकलन है नहीं है; सख्त असमानता (!==
) बनाम असमानता (!=
) को परिवर्तित करने वाले "मैला" प्रकार के उपयोग को नोट करें, जिसका दावा है कि आप वहां हैं।!=
और !==
के बीच का अंतर यहां महत्वपूर्ण है since:
- अशक्त और अपरिभाषित प्रकार
==
(लेकिन ===
)
तो कर रहे हैं यदि आप जानते हैं कि चर v
घोषित किया गया है (यानी var v
कहीं भी है) तो v != null
यह जांचने के लिए पर्याप्त है कि v
न तो null
और न ही undefined
है। हालांकि, अगर आपको नहीं पता कि v
घोषित किया गया है, तो आपको null
के साथ एक अविकसित चर की तुलना करने का प्रयास करते समय संदर्भ त्रुटि से बचने के लिए typeof
चेक की आवश्यकता है। इस जावास्क्रिप्ट पर विचार करें:
if(taco != null) {
console.log("fiesta!");
} else {
console.log("No taco!");
}
कि taco
के बाद से अपने चेहरे पर एक ReferenceError फेंक जाएगा मौजूद नहीं है। यह:
if(typeof taco !== "undefined" && taco !== null)
console.log("fiesta!");
} else {
console.log("No taco!");
}
दूसरी ओर
कुछ किया है कि घोषित नहीं किया गया पर पहुँचने का प्रयास के खिलाफ typeof
जांच गार्ड के बाद से ठीक है। मुझे नहीं लगता कि आप बैकटिक्स का उपयोग कर जावास्क्रिप्ट को एम्बेड किए बिना कॉफीस्क्रिप्ट में पहला निर्माण कर सकते हैं।
कोई सटीक प्रश्न डुप्लिकेट नहीं है, लेकिन उत्तर वही है: http://stackoverflow.com/questions/9990117/existential-operator-and-object-properties: D – epidemian