2011-03-04 14 views
6

ऐसा लगता है कि जब भी संभव हो सख्त समानता ऑपरेटर को प्राथमिकता दी जाती है - मैंने अपना कोड जेएसलिंट में रखा और निम्नलिखित प्रतिक्रिया प्राप्त की।क्यों उपयोग करते हैं === जब आप सुनिश्चित हैं कि प्रकार बराबर हैं?

कोड: JSLint से

function log() { 
    console.log(arguments.length == 1 ? arguments[0] : arguments); 
} 

प्रतिक्रिया:

Problem at line 2 character 34: Expected '===' and instead saw '=='. 

मैं क्या फायदे == यहाँ पर है === जानने के लिए उत्सुक हूँ। असल में, .lengthNumber देता है, और 1 एक Number भी है। आप 100% सुनिश्चित हो सकते हैं, इसलिए === केवल एक अनावश्यक अतिरिक्त टोकन है। साथ ही, इस प्रकार की जांच करें जब आप जानते हैं कि प्रकार हमेशा समान होंगे, इसका कोई प्रदर्शन लाभ नहीं होगा।

तो === का उपयोग करने के पीछे वास्तव में कारण क्या है?

उत्तर

4

एकमात्र कारण यह है कि आपको यह सोचने की ज़रूरत नहीं है कि आप जो तुलना कर रहे हैं वह जबरदस्त हो जाएगी या नहीं। यदि आप === का उपयोग करना चाहते हैं, तो आपके पास चिंता करने के लिए केवल एक चीज कम है।

बेशक not everyone agrees। यही कारण है कि आप जेएसलिंट में disable specific checks कर सकते हैं, यदि आप सुनिश्चित हैं कि आप क्या कर रहे हैं।

+0

मैं बेवकूफ हो सकता हूं, लेकिन क्या आप कृपया मुझे बता सकते हैं कि विकल्प पृष्ठ में '==='/'==' के लिए विकल्प कहां है? – pimvdb

+0

एर ... इसका उपयोग होता था। इसे 'इक्केक' कहा जाता था, लेकिन अब मुझे यह कोई भी नहीं मिल रहा है। – Andrea

+1

eqeqeq के साथ-साथ अतिरिक्त विकल्प एक्सटेंशन http://jshint.com/ –

1

यह कड़ाई से जरूरी नहीं है, क्योंकि आप जानते हैं कि length फ़ंक्शन अच्छी तरह से परीक्षण किया गया है। लेकिन क्या होगा अगर length थोड़ा छोटी गाड़ी थी, और false वापस लौटने का मौका था?

इस स्थिति में, 0 और false दोनों == तुलना का उपयोग करके झूठी के रूप में मूल्यांकन किया जाएगा। झूठी जांच करने के लिए (जब 0 लौटाया जा रहा है), तो आपको डेटा प्रकार भी जांचना होगा, जहां === आता है।

1

खैर, === को infinitesimally तेजी से माना जाता है, क्योंकि यह तेजी से विफल हो सकता है (टाइप मिस्चैच पर), लेकिन यह "व्यर्थ माइक्रोस्कोटीमाइजेशन" क्षेत्र के अंदर गहरा है।

वास्तव में, मैं === के लिए सलाह दूंगा, भले ही आप 105% सुनिश्चित हों - मुझे कई बार मेरी धारणाओं से गुजरना पड़ा है ("हाँ, मैं सकारात्मक हूं कि वे ... समान हैं ... ओह ... ")। जब तक उन्हें बंद करने का कोई अच्छा कारण न हो, तब तक आपके दिमाग में विश्वास करने के लिए विश्वास से संवेदना जांच सक्षम होना बेहतर होता है।

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

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