2010-01-25 11 views
17

Which equals operator (== vs ===) should be used in JavaScript comparisons? के रूप में इंगित करता है कि वे मूल रूप से समान हैं '===' को छोड़कर भी समानता सुनिश्चित करता है और इसलिए '==' प्रकार रूपांतरण कर सकता है। डगलस क्रॉकफ़ोर्ड में जावास्क्रिप्ट: गुड पार्ट्स, यह हमेशा '==' से बचने की सलाह दी जाती है। हालांकि, मैं सोच रहा हूं कि समानता ऑपरेटरों के दो सेट को डिजाइन करने का मूल विचार क्या था।जावास्क्रिप्ट == === से अधिक समझ कब होगा?

क्या आपने कोई ऐसी स्थिति देखी है जो '==' का उपयोग करके वास्तव में '===' का उपयोग करने से अधिक उपयुक्त है?

उत्तर

17

पर विचार करें एक स्थिति है जब आप नंबर या तार की तुलना:

if (4 === 4) 
{ 
    // true 
} 

लेकिन

if (4 == "4") 
{ 
    // true 
} 

एक nd

if (4 === "4") 
{ 
    // false 
} 

यह वस्तुओं के साथ-साथ सरणी पर भी लागू होता है।

तो ऊपर मामलों में, आप चाहे उपयोग करने के लिए समझदार विकल्प बनाने के लिए है == या ===

+0

मैं उन दोनों के बीच अंतर नहीं पूछ रहा हूं, जिनका उत्तर 35 9 4 9 4 में दिया गया है। मुझे यह जानने में दिलचस्पी है कि '==' विशेष रूप से उपयुक्त होगा। – bryantsai

+5

@ ब्रायंटैसाई: उन्होंने आपको वह दिया - मैन्युअल रूप से 'parseInt' का उपयोग किए बिना तारों की तुलना करना। – Anonymous

+0

मिमी .. वास्तव में यह नहीं पता था, धन्यवाद। – bryantsai

0

== तुलना करता है कि 2 पक्षों का मान समान है या नहीं।

=== तुलना करता है कि 2 पक्षों का मूल्य और डेटाटाइप समान है या नहीं।

कहते हैं कि हम

$var = 0; 

if($var == false){ 
    // true because 0 is also read as false 
} 

if(!$var){ 
    // true because 0 is also read as false 
} 

if($var === false){ 
    // false because 0 is not the same datatype as false. (int vs bool) 
} 

if($var !== false){ 
    // true becuase 0 is not the same datatype as false. (int vs bool) 
} 

if($var === 0){ 
    // true, the value and datatype are the same. 
} 

है आप जाँच कर सकते हैं http://www.jonlee.ca/the-triple-equals-in-php/

+3

-1 यह जावास्क्रिप्ट के बारे में है और PHP नहीं। – Gumbo

3

मेरा सुझाव है वहाँ == उपयोग करने के साथ कोई समस्या नहीं है, लेकिन समझने के लिए जब और यह कारण है कि उपयोग करने के लिए (यानी नियम के रूप में === का उपयोग करें, और == जब यह किसी उद्देश्य को पूरा करता है)। अनिवार्य रूप से, == केवल आपके आशुलिपि संकेतन देता है - (! Vble) के बजाय यह सिर्फ

if (vble == false) ... 

(या और भी आसान लिखने के लिए) लिखने के लिए

बहुत आसान है जैसे

if (vble === 0 || vble === "" || vble === null || vble === undefined || vble === false) ... 

कुछ करने का है, तो ...

बेशक केवल "सच्चाई" या "झूठी" मानों की तलाश में अधिक उदाहरण हैं।

सच में, तुम सिर्फ समझने के लिए कब और क्यों == और === उपयोग करने की आवश्यकता है, मैं किसी भी कारण है कि == उपयोग करने के लिए नहीं है, जहां वह अच्छी तरह फिट नहीं दिख रहा है ...

एक और उदाहरण यह आशुलिपि के लिए उपयोग कर रहा है आशुलिपि प्रणाली को बुलाती है अनुमति देते हैं:

function func(boolOptionNotCommonlyUsed) { 
    if (boolOptionNotCommonlyUsed) { //equiv to boolOptionNotCommonlyUsed == true 
    //do something we rarely do 
    } 
    //do whatever func usually does 
} 

func(); //we rarely use boolOptionNotCommonlyUsed, so allow calling without "false" as an arg 
5

सरल जवाब है कि '==' की तुलना में अधिक समझ में आता है है '=== "जब आप चाहते तुलना दौरान होने की प्रकार बलात्कार।

एक अच्छा उदाहरण URL क्वेरी स्ट्रिंग में संख्याओं को पारित किया जाएगा। उदाहरण के लिए यदि आपके पास पृष्ठांकित सामग्री है, और page क्वेरी पैरामीटर वर्तमान पृष्ठ संख्या रखता है, तो आप if (page == 1) ... के साथ वर्तमान पृष्ठ की जांच कर सकते हैं, भले ही page वास्तव में "1" है, 1 नहीं है।

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