2012-08-08 6 views
8

संभव डुप्लिकेट:
JavaScript === vs == : Does it matter which “equal” operator I use?क्या जावास्क्रिप्ट में स्ट्रिंग की तुलना करने के लिए === का उपयोग करना आवश्यक है या == पर्याप्त है?

मैं समझ सकता क्यों === आवश्यक जब नंबर, बूलियन्स, रिक्त स्ट्रिंग, आदि की तुलना, अप्रत्याशित प्रकार रूपांतरण की वजह से जैसे है

var foo = 1; 
var bar = true; 
// bar == foo => true 
// bar === foo => false 

लेकिन जब एक गैर खाली स्ट्रिंग शाब्दिक को एक चर की तुलना == कभी एक बग लागू कर सकते हैं? क्या इस मामले में ===== से अधिक उपयोग करना अधिक कुशल है?

+0

http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/ – diEcho

+0

समानता टाइप करें समान या तेज़ होना चाहिए: http://stackoverflow.com/a/359509/453277 –

+0

समानता ऑपरेटर ('===')। यह जांचता है कि मान एक ही मूल्य और एक ही प्रकार के हैं। इसे याद रखें। – diEcho

उत्तर

7

यह यहां बहुत से पूछा गया है इसलिए मैं एक बेहतर पोस्टर को अपने आप जवाब दूंगा।

यहाँ एक नज़र डालें: http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html

3 बराबर संकेत मतलब है "के बिना प्रकार बलात्कार समानता"। ट्रिपल बराबर का उपयोग करके, मानों को भी प्रकार के बराबर होना चाहिए।

 
0==false // true 
0===false // false, because they are of a different type 
1=="1"  // true, auto type coercion 
1==="1" // false, because they are of a different type 

स्रोतDifference between == and === in JavaScript

1

ठीक है, मैंने इसे स्वयं उत्तर दिया ... 5 == "5", लेकिन 5! == "5", जो अप्रत्याशित हो सकता है। मैं किसी को भी श्रेय दूंगा जिसकी गहरी अंतर्दृष्टि है।

+0

उत्तर था ... – DerWaldschrat

4

यह एक अच्छा अभ्यास हमेशा पहचान ऑपरेटरों (!== और ===) का उपयोग करें और मैन्युअल प्रकार बलात्कार प्रदर्शन केवल जब आप (जैसे Boolean(someVar) या Number(someVar)) की जरूरत है।

A fun fiddle

0

"==" तुलना करने से पहले एक प्रकार का रूपांतरण करता है। यही कारण है कि 5 == "5" सत्य है और झूठी नहीं है।

"===" इसके बजाय यह रूपांतरण नहीं है ताकि 5 === "5" उतना ही न हो जितना कि प्रकार समान नहीं है।

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

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