2012-03-06 12 views
6

के बजाय अच्छे पुराने == का उपयोग कैसे करें मुझे वास्तव में कॉफ़ीस्क्रिप्ट पसंद है, लेकिन एक चीज जो मुझे हाल ही में पागल बनाती है, बयान में संख्याओं और स्ट्रिंग्स के साथ समस्याएं टाइप करती है। आम तौर पर कोई समस्या नहीं है क्योंकि जब आप == का उपयोग करते हैं तो जावास्क्रिप्ट परवाह नहीं है, लेकिन कॉफ़ीस्क्रिप्ट सभी तुलनाओं को === में परिवर्तित करता है। क्या मैला पुरानी == तुलना वापस पाने का कोई तरीका है? मैं बेवकूफ खिलाता हूं लेकिन मुझे इस पर कुछ भी नहीं मिला है।टाइपकास्टिंग समस्याएं, ===

इसका कारण यह है कि मैंने पढ़ने के लिए आसान बनाने के लिए शानदार http://js2coffee.org/ का उपयोग करके अन्य लोगों के कोड को परिवर्तित किया, लेकिन फिर मैं टाइपकास्टिंग समस्याओं को दर्ज करता हूं क्योंकि == तुलना === द्वारा प्रतिस्थापित की जाती है। कहने की जरूरत नहीं है कि मैं पूरे कोड को दोबारा करने के लिए f *** g आलसी हूं;)।

+0

धन्यवाद: क्या तुम सच में आप एक == तुलना की जरूरत है तो आप बैकटिक में रख सकते हैं! – asawyer

+0

कृपया टैग को शीर्षक, अभिवादन और हस्ताक्षर में छोड़ दें। –

+2

दुर्भाग्यवश, जावास्क्रिप्ट कोड को कॉफीस्क्रिप्ट में कनवर्ट करने का कोई विश्वसनीय तरीका नहीं है। यदि आप js2coffee का उपयोग करते हैं, तो इसे शुरुआती बिंदु के रूप में उपयोग करें। आमतौर पर, जब आपके पास 'a == b' था, तो आप वास्तव में क्या चाहते हैं, '+ a is + b' या' # {a}" जैसी स्ट्रिंग तुलना "# {b}" है। –

उत्तर

10

asawyer के रूप में कहा, इस डिजाइन कर रहा है। लिंक है कि वास्तव में उपयोगी लग रहा है के लिए

if `foo == bar` 
    alert 'Sloppy comparison true' 
+0

ठीक है, हमेशा जेएस लिखने का तरीका हमेशा होता है। मुझे पता नहीं था कि यह सिर्फ बयानों के भीतर तुलना के लिए काम कर रहा है। उसके लिए धन्यवाद। – thomasf1

+0

कोई समस्या नहीं है। मदद करने में खुशी। – Jivings

11

यह डिज़ाइन द्वारा है। CoffeeScript: Accelerated JavaScript Development

CoffeeScript की किताब से हवाला देते हुए है और == दोनों जावास्क्रिप्ट का === को संकलन; जावास्क्रिप्ट के ==, की ढीली, प्रकार-कोरोर्सिंग समानता जांच प्राप्त करने के लिए कोई रास्ता नहीं है जो जेएसलिंट और अन्य द्वारा "डब्ल्यूटीएफ?" क्षणों के स्रोत के रूप में फंस गया है। के http://wtfjs.com/2011/02/11/all-your-commas-are-belong-to-Array से एक उदाहरण के लिए दे:

",,," == new Array(4) // true 
There are also cases where == isn’t transitive: 
'' == '0' // false 
0 == '' // true 
0 == '0' // true 

इन सिर scratchers बचने के लिए आप प्रकार रूपांतरण प्रदर्शन करना चाहिए स्पष्ट रूप से

+0

उद्धरण के लिए धन्यवाद। मुझे पता है कि यह एक डिजाइन निर्णय है और यह प्रिंसिपल में एक अच्छा है। मुझे आश्चर्य हुआ कि अगर इसके आसपास कोई रास्ता है, हालांकि स्पष्ट रूप से आवश्यक है (कई प्रोग्रामिंग भाषाएं "डिफ़ॉल्ट" सही तरीके से होती हैं, लेकिन अक्सर बदसूरत तरीके से भी अनुमति देती हैं)। – thomasf1

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