2011-08-11 14 views
54

मुझे वह CoffeeScript compiles == into the JavaScript === operator पसंद है। लेकिन क्या होगा यदि आप मूल जेएस == अर्थशास्त्र चाहते हैं? क्या वे उपलब्ध हैं? मैंने प्रलेखन पर ध्यान दिया है और इसे सक्षम करने में कुछ भी नहीं मिला है।क्या कॉफीस्क्रिप्ट जावास्क्रिप्ट-शैली == समानता अर्थशास्त्र की अनुमति देता है?

अधिक आम तौर पर, क्या मेरे कॉफीस्क्रिप्ट कोड में सादा जेएस को इनलाइन करने का कोई तरीका है ताकि संकलक इसे छू न सके?

मैं संकलित जावास्क्रिप्ट आउटपुट को संपादित करने से बचना पसंद करूंगा, क्योंकि मैं विजुअल स्टूडियो में ऑटो-जेनरेट करने के लिए Chirpy का उपयोग कर रहा हूं।

+8

आपको '==' क्यों चाहिए? इस सामान को करने का स्वीकार्य तरीका स्पष्ट जबरदस्ती के माध्यम से है। 'a.toString() === b.toString()' या 'parseInt (ए, 10) === parseInt (बी, 10)'। '==' को बहुत कम विशिष्ट मामलों को छोड़कर भरोसा नहीं किया जाना चाहिए जो आपके लिए कॉफ़ी स्क्रिप्ट कंपाइलर द्वारा तर्कसंगत तरीके से संभाला जाना चाहिए। –

+0

@ स्क्वीगी - वास्तव में एक अकादमिक प्रश्न, वास्तव में, लेकिन मैं ज्यादातर 'parseInt (ए, 10) === parseInt (बी, 10) 'के छोटे रूप की तलाश में था। –

+2

@ जोसेफ - "पोर्ड" एक शब्द है, और इसका मतलब "डाला" जैसा नहीं है। –

उत्तर

74

इस के संभावित विस्तार के रूप में, क्या नियमित जेएस के ब्लॉक को कॉफीस्क्रिप्ट कोड में इनलाइन करने का कोई तरीका है ताकि इसे संकलित नहीं किया जा सके?

हां, here's the documentation। आपको बैकटिक्स में जावास्क्रिप्ट कोड को लपेटने की आवश्यकता है (`)। कॉफीस्क्रिप्ट में जावास्क्रिप्ट के == का सीधे उपयोग करने का यही एकमात्र तरीका है। उदाहरण के लिए:

CoffeeScript स्रोत [try it]
if `a == b` 
    console.log "#{a} equals #{b}!" 
जावास्क्रिप्ट
if (a == b) { 
    console.log("" + a + " equals " + b + "!"); 
} 

== null/undefined/void 0 के विशेष मामले के पोस्टफ़िक्स अस्तित्व ऑपरेटर ? की सेवा उपलब्ध है संकलित:

कॉफीस्क्रिप्ट स्रोत [try it]
x = 10 
console.log x? 
जावास्क्रिप्ट
var x; 
x = 10; 
console.log(x != null); 
CoffeeScript स्रोत संकलित [try it]
# `x` is not defined in this script but may have been defined elsewhere. 
console.log x? 
जावास्क्रिप्ट
var x; 
console.log(typeof x !== "undefined" && x !== null); 
+1

बिल्कुल सही। '\' 'रैपर बस वही है जो मैं खोज रहा था, धन्यवाद। अस्तित्व ऑपरेटर का उल्लेख करने के लिए –

+5

+1। मैं ठीक उसी मामले के लिए == अर्थशास्त्र की तलाश में था। – yjo

+4

बस एक नोट, यह कॉफ़ेस्क्रिप्ट के => ब्लॉक वाक्यविन्यास और 'यह' कीवर्ड के साथ संघर्ष करता है। यदि आप टिकों के अंदर 'यह' डालते हैं, तो आपको इसे _this में बदलना होगा या समस्या को बाईपास करना होगा। –

1

संकलित यह बिल्कुल जवाब है, लेकिन इस समस्या के लिए आया था मेरे लिए ऊपर क्योंकि jQuery की .text() व्हाइटस्पेस समेत था और 'है' कॉफ़ीस्क्रिप्ट में विफल रहा था। JQuery के ट्रिम फ़ंक्शन का उपयोग करके इसे प्राप्त करें:

$.trim(htmlText) is theExpectedValue 
संबंधित मुद्दे