सवाल कौन सा ऑपरेटर बराबर है (== बनाम ===) जावास्क्रिप्ट तुलना में इस्तेमाल किया जाना चाहिए?


मैं उपयोग कर रहा हूँ JSLint जावास्क्रिप्ट के माध्यम से जाने के लिए, और यह बदलने के लिए कई सुझाव लौट रहा है == (दो बराबर संकेत) के साथ === (तीन बराबर संकेत) तुलना करते समय चीजें करते समय idSele_UNVEHtype.value.length == 0 ए के अंदर if बयान।

बदलने के लिए एक प्रदर्शन लाभ है == साथ में ===?

किसी भी प्रदर्शन सुधार का स्वागत किया जाएगा क्योंकि कई तुलना ऑपरेटर मौजूद हैं।

यदि कोई प्रकार का रूपांतरण नहीं होता है, तो क्या प्रदर्शन लाभ होगा ==?


5674
2017-12-11 14:19


मूल


जिनके लिए यह एक ही विषय में रुचि हो सकती है === vs ==, लेकिन PHP में, यहां पढ़ सकते हैं: stackoverflow.com/questions/2401478/why-is-faster-than-in-php/... - Marco Demaio
अगर कोई 2012 में सोच रहा था तो बस: === है मार्ग की तुलना में तेज ==। jsperf.com/comparison-of-comparisons - Ry-♦
@minitech यह होना चाहिए क्योंकि यह प्रकार रूपांतरण नहीं करता है - Umur Kontacı
@minitech, मुझे संदेह है कि कोई भी उपयोग करके अपने आवेदन को ध्यान से तेज़ी से बनाने जा रहा है === ऊपर ==। वास्तव में, बेंचमार्क आधुनिक ब्राउज़रों दोनों के बीच एक बड़ा अंतर नहीं दिखाता है। व्यक्तिगत रूप से, मैं आमतौर पर उपयोग करता हूं == हर जगह जब तक मुझे वास्तव में सख्त समानता की आवश्यकता नहीं होती है। - this.lau_
@johndodo: समयपूर्व अनुकूलन केवल एक चीज है क्योंकि अनुकूलित कोड एक रखरखाव और पठनीयता दृष्टिकोण से कम आदर्श हो सकता है, लेकिन यदि प्रकार की रूपांतरण सुविधाएं == की जरूरत नहीं है, का उपयोग करें === इसके बजाय अच्छा अभ्यास है, समयपूर्व अनुकूलन नहीं। इसके बारे में कुछ भी नहीं है === जो कोड रखरखाव या पठनीयता को कम करता है। - Robert Harvey♦


जवाब:


पहचान (===) ऑपरेटर समानता के समान व्यवहार करता है (==) ऑपरेटर को छोड़कर कोई प्रकार का रूपांतरण नहीं किया जाता है, और प्रकार बराबर माना जाना चाहिए।

संदर्भ: जावास्क्रिप्ट ट्यूटोरियल: तुलना ऑपरेटर

== ऑपरेटर समानता के लिए तुलना करेगा किसी भी आवश्यक प्रकार के रूपांतरण करने के बाद=== ऑपरेटर होगा नहीं रूपांतरण करें, इसलिए यदि दो मान एक ही प्रकार के नहीं हैं === बस वापस आ जाएगा false। दोनों समान रूप से जल्दी हैं।

डगलस क्रॉकफोर्ड के उत्कृष्ट उद्धरण के लिए जावास्क्रिप्ट: गुड पार्ट्स,

जावास्क्रिप्ट में समानता ऑपरेटरों के दो सेट हैं: === तथा !==, और उनके बुरे जुड़वां == तथा !=। अच्छे लोग जिस तरह से आप उम्मीद करेंगे काम करते हैं। यदि दो ऑपरेंड एक ही प्रकार के होते हैं और फिर समान मान होते हैं === पैदा करता है true तथा !== पैदा करता है false। बुराई जुड़वां सही काम करते हैं जब ऑपरेंड एक ही प्रकार के होते हैं, लेकिन यदि वे विभिन्न प्रकार के होते हैं, तो वे मूल्यों को मजबूत करने का प्रयास करते हैं। जिन नियमों से वे करते हैं वे जटिल और अमानवीय होते हैं। ये कुछ दिलचस्प मामले हैं:

'' == '0'           // false
0 == ''             // true
0 == '0'            // true

false == 'false'    // false
false == '0'        // true

false == undefined  // false
false == null       // false
null == undefined   // true

' \t\r\n ' == 0     // true

पारगमन की कमी खतरनाक है। मेरी सलाह है कि कभी बुराई जुड़वां का उपयोग न करें। इसके बजाय, हमेशा उपयोग करें === तथा !==। सभी तुलनाओं ने अभी दिखाया है false उसके साथ === ऑपरेटर।


अद्यतन करें:

एक अच्छा बिंदु लाया गया था @Casebash टिप्पणियों में और अंदर @ फिलिप लेबर्ट्स  उत्तर संदर्भ प्रकार से संबंधित। संदर्भ प्रकार के लिए == तथा === एक दूसरे के साथ लगातार कार्य करें (एक विशेष मामले को छोड़कर)।

var a = [1,2,3];
var b = [1,2,3];

var c = { x: 1, y: 2 };
var d = { x: 1, y: 2 };

var e = "text";
var f = "te" + "xt";

a == b            // false
a === b           // false

c == d            // false
c === d           // false

e == f            // true
e === f           // true

विशेष मामला तब होता है जब आप एक ऐसे शब्द के साथ एक शाब्दिक की तुलना करते हैं जो उसी शाब्दिक के मूल्यांकन के कारण होता है toString या valueOf तरीका। उदाहरण के लिए, स्ट्रिंग अक्षर की तुलना को एक स्ट्रिंग ऑब्जेक्ट के साथ तुलना करें String निर्माता।

"abc" == new String("abc")    // true
"abc" === new String("abc")   // false

यहां ही == ऑपरेटर दो वस्तुओं के मूल्यों की जांच कर रहा है और लौट रहा है true, लेकिन वो === देख रहा है कि वे एक ही प्रकार के नहीं हैं और लौट रहे हैं false। कौनसा सही है? यह वास्तव में उस चीज़ पर निर्भर करता है जिसे आप तुलना करने की कोशिश कर रहे हैं। मेरी सलाह है कि प्रश्न को पूरी तरह से बाईपास करें और केवल इसका उपयोग न करें String स्ट्रिंग ऑब्जेक्ट्स बनाने के लिए कन्स्ट्रक्टर।

संदर्भ
http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3


5728
2017-12-11 14:25



=== यदि प्रकार समान हैं तो तेज़ नहीं है। यदि प्रकार समान नहीं हैं, तो === तेज हो जाएगा क्योंकि यह रूपांतरण करने की कोशिश नहीं करेगा। - Bill the Lizard
=== कभी भी == से धीमा नहीं होगा। वे दोनों प्रकार की जांच करते हैं, इसलिए === == की तुलना में कुछ भी अतिरिक्त नहीं करता है, लेकिन टाइप चेक === को जल्द से जल्द बाहर निकलने की अनुमति दे सकता है जब प्रकार समान नहीं होते हैं। - Bill the Lizard
सभी को बदलना == /! = === /! == जेएस फ़ाइल के आकार को बढ़ाता है, इसे लोड करने में और अधिक समय लगेगा। :) - Marco Demaio
"... नियम जो वे करते हैं वे जटिल और अमानवीय हैं ..." अब ऐसे वक्तव्य आपको प्रोग्रामिंग के दौरान इतना सुरक्षित महसूस करते हैं ... - Johan
कभी-कभी जावास्क्रिप्ट की टाइप सिस्टम मुझे चीखने से दूर भागना चाहती है। - Yawar


का उपयोग करते हुए ==ऑपरेटर (समानता)

true == 1; //true, because 'true' is converted to 1 and then compared
"2" == 2;  //true, because "2" is converted to 2 and then compared

का उपयोग करते हुए ===ऑपरेटर (पहचान)

true === 1; //false
"2" === 2;  //false

ऐसा इसलिए है क्योंकि समानता ऑपरेटर == जबरदस्ती टाइप करता है, जिसका अर्थ है कि दुभाषिया तुलनात्मक रूप से तुलना करने से पहले मूल्यों को परिवर्तित करने की कोशिश करता है।

दूसरी तरफ, पहचान ऑपरेटर === प्रकार जबरदस्ती नहीं करता है, और तुलना करते समय मूल्यों को परिवर्तित नहीं करता है।


990
2018-06-05 19:11



@ सॉफ्टवेयर बंदर: मूल्य प्रकारों के लिए नहीं (संख्या, बुलियन, ...) - Philippe Leybaert
type coercion vs type casting vs type convertion: stackoverflow.com/questions/8857763/... - Adrien Be
चूंकि किसी ने जावास्क्रिप्ट इक्विटी टेबल का उल्लेख नहीं किया है, यहां यह है: dorey.github.io/JavaScript-Equality-Table - blaze
पहले वक्तव्य में, क्या आप सुनिश्चित हैं कि 'सत्य' 1 में परिवर्तित हो गया है और 1 को सही में परिवर्तित नहीं किया गया है? - Shadi Namrouti
"समानता" और "पहचान" शब्द कहां से आते हैं? मानक उन शर्तों का उपयोग नहीं करता है। यह कॉल करता है == "अमूर्त समानता" और यह कॉल करता है ==="सख्त समानता"। अनुमोदित कॉलिंग == किसी भी तरह की "समानता" IMHO भयानक है, क्योंकि यह संक्रमणीय नहीं है, लेकिन क्यों quibble? हालांकि मैं "पहचान" के साथ और अधिक मुद्दा लेता हूं; मुझे लगता है कि यह शब्द बहुत भ्रामक है, हालांकि यह "काम करता है।" लेकिन गंभीरता से, किसने "पहचान" शब्द बनाया? मैं मानक खोजता हूं और इसे नहीं ढूंढ पाया। - Ray Toal


यहां जवाब में, मैंने कुछ भी नहीं पढ़ा बराबरी का माध्यम। कुछ लोग यह कहेंगे === माध्यम बराबर और एक ही प्रकार के, लेकिन यह वास्तव में सच नहीं है। इसका वास्तव में मतलब है दोनों ऑपरेंड एक ही वस्तु का संदर्भ देते हैं, या मामले में मूल्य प्रकार, एक ही मूल्य है

तो, चलिए निम्नलिखित कोड लेते हैं:

var a = [1,2,3];
var b = [1,2,3];
var c = a;

var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true

मुझे भी:

var a = { x: 1, y: 2 };
var b = { x: 1, y: 2 };
var c = a;

var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true

या और भी:

var a = { };
var b = { };
var c = a;

var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true

यह व्यवहार हमेशा स्पष्ट नहीं होता है। समानता और समान प्रकार के होने की तुलना में कहानी के लिए और भी कुछ है।

नियम है:

मूल्य प्रकारों (संख्याओं) के लिए:
a === b अगर सच हो जाता है a तथा b एक ही मूल्य है और एक ही प्रकार के हैं

संदर्भ प्रकारों के लिए:
a === b अगर सच हो जाता है a तथा b सटीक उसी वस्तु का संदर्भ लें

तारों के लिए:
a === b अगर सच हो जाता है a तथा b दोनों तार हैं और सटीक एक ही अक्षर हैं


स्ट्रिंग्स: विशेष मामला ...

स्ट्रिंग्स मान प्रकार नहीं हैं, लेकिन जावास्क्रिप्ट में वे मूल्य प्रकारों की तरह व्यवहार करते हैं, इसलिए स्ट्रिंग में वर्ण समान होते हैं और जब वे समान लंबाई के होते हैं (जैसा कि तीसरे नियम में बताया गया है) वे "बराबर" होंगे।

अब यह दिलचस्प हो जाता है:

var a = "12" + "3";
var b = "123";

alert(a === b); // returns true, because strings behave like value types

लेकिन इसके बारे में कैसे ?:

var a = new String("123");
var b = "123";

alert(a === b); // returns false !! (but they are equal and of the same type)

मैंने सोचा कि तार मूल्य प्रकारों की तरह व्यवहार करते हैं? खैर, यह निर्भर करता है कि आप कौन पूछते हैं ... इस मामले में ए और बी एक ही प्रकार के नहीं हैं। a प्रकार का है Object, जबकि b प्रकार का है string। बस याद रखें कि एक स्ट्रिंग ऑब्जेक्ट का उपयोग कर String निर्माता कुछ प्रकार का निर्माण करता है Object वह एक स्ट्रिंग के रूप में व्यवहार करता है सर्वाधिक समय


546
2018-05-05 05:21



सक्रियता: मैं स्पष्ट करता हूं कि तार केवल तभी होते हैं जब वे अक्षर होते हैं। नया स्ट्रिंग ("एबीसी") === "एबीसी" गलत है (मेरे शोध के अनुसार)। - Lawrence Dol
new Number() == "0"। फ़ायरफ़ॉक्स में भी: (function(){}) == "function () {\n}" - Thomas Eding
क्यों समझाओ के लिए धन्यवाद new String("123") !== "123"। वे अलग-अलग प्रकार हैं। सरल, अभी तक भ्रमित। - styfle
String वस्तुओं के रूप में तार के रूप में व्यवहार करते हैं कोई अन्य वस्तु। new String कभी भी इस्तेमाल नहीं किया जाना चाहिए, क्योंकि यह असली तार नहीं बनाता है। एक असली स्ट्रिंग और स्ट्रिंग अक्षर या कॉलिंग के साथ बनाया जा सकता है String एक समारोह के रूप में के बग़ैर  new, उदाहरण के लिए: String(0); //"0", Real string, not an object - Esailija
लेकिन जिन मामलों में आप विस्तृत हैं, ऑपरेटर "==" बिल्कुल वही व्यवहार करता है। - Yaron Levi


बीच समानता तुलना का एक दिलचस्प चित्रमय प्रतिनिधित्व == तथा ===

स्रोत: http://dorey.github.io/JavaScript-Equality-Table/


var1 === var2

उपयोग करते समय === जावास्क्रिप्ट समानता परीक्षण के लिए, सबकुछ जैसा है। मूल्यांकन करने से पहले कुछ भी परिवर्तित नहीं हो जाता है।

Equality evaluation of === in JS


var1 == var2

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

Equality evaluation of == in JS

कहानी का नैतिक: 

उपयोग === जब तक आप पूरी तरह से समझ नहीं लेते   रूपांतरण जो साथ होते हैं ==


522
2017-11-28 18:18



@mfeineis का मतलब है === या! == == या! = के बजाय। नए कोडर को भ्रमित नहीं करना चाहते;) - katalin_2003
@ katalin_2003 ओह, आप सही हैं === और! ==, डी ** एन टाइपो, thx - mfeineis
@ vsync: वाह, जो लोग JQuery का दुरुपयोग करते हैं वे भी वही बात कहते हैं। मैं कभी नहीं जानता था कि आप में बहुत कुछ था ...
@ vsync: यदि आप वास्तव में नहीं चाहते कि प्रकार बराबर हों, आप चाहिए उपयोग तीन बराबर! - SNag
यह जवाब बहुत उपयोगी है !!! - skiabox


मुझे यह सलाह जोड़ने दो:

यदि संदेह में है, तो पढ़ें विनिर्देश! 

ईसीएमए -262 एक स्क्रिप्टिंग भाषा के लिए विनिर्देश है जिसकी जावास्क्रिप्ट एक बोली है। निश्चित रूप से यह अधिक मायने रखता है कि सबसे महत्वपूर्ण ब्राउज़र एक गूढ़ परिभाषा से कैसे व्यवहार करते हैं कि कुछ कैसे संभाला जाना चाहिए। लेकिन यह समझने में मददगार क्यों है नया स्ट्रिंग ("ए")! == "ए"

कृपया मुझे बताएं कि इस प्रश्न को स्पष्ट करने के लिए विनिर्देश को कैसे पढ़ा जाए। मैं देखता हूं कि इस पुराने विषय में किसी को भी बहुत अजीब प्रभाव का जवाब नहीं था। इसलिए, यदि आप एक विनिर्देश पढ़ सकते हैं, तो यह आपको अपने पेशे में बहुत मदद करेगा। यह एक अधिग्रहण कौशल है। तो, चलो जारी रखें।

=== के लिए पीडीएफ फ़ाइल खोजना मुझे विनिर्देश के पृष्ठ 56 पर लाता है: 11.9.4। सख्त बराबर ऑपरेटर (===), और विशिष्टताओं के माध्यम से wading के बाद मुझे लगता है:

11.9.6 सख्त समानता तुलना एल्गोरिदम
  तुलना x === y, जहां x और y मान हैं, उत्पादन करता है सच या असत्य। इस तरह की तुलना निम्नानुसार की जाती है:
  1. यदि टाइप (एक्स) टाइप (वाई) से अलग है, तो वापसी करें असत्य
  2. यदि टाइप (एक्स) अपरिभाषित है, तो वापसी करें सच
  3. यदि टाइप (एक्स) शून्य है, तो वापसी करें सच
  4. यदि टाइप (एक्स) संख्या नहीं है, तो चरण 11 पर जाएं।
  5. यदि एक्स है NaN, वापसी असत्य
  6. यदि वाई है NaN, वापसी असत्य
  7. यदि एक्स वाई के समान संख्या मान है, तो वापसी करें सच
  8. यदि एक्स +0 है और y -0 है, तो वापसी करें सच
  9। यदि एक्स है -0 और वाई +0 है, तो वापसी करें सच
  10. वापसी असत्य
  11. यदि टाइप (एक्स) स्ट्रिंग है, तो वापस लौटें सच यदि एक्स और वाई अक्षर के समान अनुक्रम हैं (समान लंबाई में समान लंबाई और समान वर्ण); अन्यथा, वापसी असत्य
  12. यदि टाइप (एक्स) बूलियन है, तो वापसी करें सच यदि एक्स और वाई दोनों हैं सच अथवा दोनों असत्य; अन्यथा, वापसी असत्य
  13. वापसी सच यदि एक्स और वाई एक ही ऑब्जेक्ट को संदर्भित करते हैं या यदि वे एक-दूसरे से जुड़े ऑब्जेक्ट्स को संदर्भित करते हैं (13.1.2 देखें)। अन्यथा, वापसी करें असत्य

दिलचस्प चरण 11 है। हां, तारों को मूल्य प्रकार के रूप में माना जाता है। लेकिन यह क्यों नहीं समझाता है नया स्ट्रिंग ("ए")! == "ए"। क्या हमारे पास एक ब्राउज़र है जो ईसीएमए -262 के अनुरूप नहीं है?

इतना शीघ्र नही!

चलो ऑपरेटरों के प्रकार की जांच करें। उन्हें लपेटकर अपने लिए कोशिश करें प्रकार का()। मुझे वह मिल गया नया स्ट्रिंग ("ए") एक वस्तु है, और चरण 1 का उपयोग किया जाता है: वापसी असत्य अगर प्रकार अलग हैं।

अगर आपको आश्चर्य है कि क्यों नया स्ट्रिंग ("ए") एक स्ट्रिंग वापस नहीं करता है, कुछ अभ्यास के बारे में कुछ अभ्यास कैसे पढ़ा जाता है? मज़े करो!


एडियाकापी ने नीचे एक टिप्पणी में लिखा:

विनिर्देश से

11.2.2 नया ऑपरेटर:

यदि टाइप (कन्स्ट्रक्टर) ऑब्जेक्ट नहीं है, तो TypeError अपवाद फेंक दें।

दूसरे शब्दों के साथ, यदि स्ट्रिंग ऑब्जेक्ट प्रकार का नहीं होगा तो इसे नए ऑपरेटर के साथ उपयोग नहीं किया जा सका।

नया हमेशा के लिए भी एक ऑब्जेक्ट देता है तार कन्स्ट्रक्टर भी। और हां! तारों के लिए मूल्य अर्थशास्त्र (चरण 11 देखें) खो गया है।

और अंत में इसका मतलब है: नया स्ट्रिंग ("ए")! == "ए"


250
2018-05-12 12:58



प्रकार (एक्स) का परिणाम टाइपफ के समान होता है? - Dfr


PHP और जावास्क्रिप्ट में, यह एक सख्त समानता ऑपरेटर है। जिसका अर्थ है, यह दोनों प्रकार और मूल्यों की तुलना करेगा।


93
2017-12-25 11:17



@ डेविड: सही। यही कारण है कि यह जवाब गलत है (या यहां तक ​​कि गलत भी) - Philippe Leybaert
@ दाऊद var a = {}, b = {};  a == b झूठी वापसी - nyuszika7h
हाँ: दो विभिन्न एक ही प्रकार और मूल्य वाली वस्तुएं झूठी तुलना करती हैं, यानी, यह उत्तर सिर्फ गलत है। इसमें 50 अपवॉट क्यों हैं? - alexis
मुझे एहसास है कि यह पुराना है, लेकिन यह स्पष्ट करने के लिए कि यह उत्तर अभी भी "सही" क्यों है क्योंकि उदाहरण में var a = {}, b = {}; जबकि दोनों a तथा b वास्तव में एक वस्तु दोनों है, लेकिन वे नहीं हैं वही मूल्य, तकनीकी रूप से बोल रहा है। वो हैं विभिन्न उदाहरणों। ध्यान दें कि उदाहरणों की तुलना प्राइमेटिव की तुलना में अलग-अलग व्यवहार करती है। जो शायद इस भ्रम में जोड़ता है। यदि आप आदिम डेटा प्रकारों के इंस्टेंस संस्करण का उपयोग करते हैं तो आप समान तुलना व्यवहार देखेंगे। उदा new String('asdf') या new Number(5)। उदाहरण के लिए: new Number(5) == new Number(5) झूठ है, भले ही वे एक ही मूल्य रखते हैं। - Norman Breau


मैंने फ़ायरफ़ॉक्स में इसका परीक्षण किया Firebug इस तरह के कोड का उपयोग कर:

console.time("testEquality");
var n = 0;
while(true) {
    n++;
    if(n==100000) 
        break;
}
console.timeEnd("testEquality");

तथा

console.time("testTypeEquality");
var n = 0;
while(true) {
    n++;
    if(n===100000) 
        break;
}
console.timeEnd("testTypeEquality");

मेरे परिणाम (प्रत्येक और औसत पांच बार परीक्षण किया गया):

==: 115.2
===: 114.4

तो मैं कहूंगा कि मिनीस्कूल अंतर (यह 100000 से अधिक पुनरावृत्तियों, याद है) नगण्य है। प्रदर्शन नहीं है करने का एक कारण ===। सुरक्षा टाइप करें (अच्छी तरह से, जैसा कि आप जावास्क्रिप्ट में प्राप्त करने जा रहे हैं), और कोड की गुणवत्ता है।


88
2018-05-12 12:58



प्रकार की सुरक्षा से अधिक आप तार्किक शुद्धता चाहते हैं - कभी-कभी आप चीजों को सच मानना ​​चाहते हैं == सहमत नहीं हैं। - rpjohnst
अब, जब तुलनात्मक रूप से वास्तविक प्रकार के होते हैं तो ये तुलना कैसे करते हैं == ऑपरेटर? याद रखें, जब प्रदर्शन प्रदर्शन होता है। - Hubert OG
प्रमुख अंतर जब उपरोक्त कारणों के लिए ठीक से जांच की जाती है तो केवल प्रकार की असमानता की जांच करें। jsfiddle.net/4jhuxkb2 - Doug Morrow


जावास्क्रिप्ट में इसका मतलब वही मान और प्रकार है।

उदाहरण के लिए,

4 == "4" // will return true

परंतु

4 === "4" // will return false 

84
2017-12-11 14:58





=== ऑपरेटर को सख्त तुलना ऑपरेटर कहा जाता है, यह कर देता है से अलग है == ऑपरेटर।

आइए 2 वर्र्स ए और बी लें।

के लिये "ए == बी" सच्चाई का मूल्यांकन करने के लिए और बी होने की आवश्यकता है एक ही मूल्य

के मामले में "ए === बी" ए और बी होना चाहिए एक ही मूल्य और भी इसी प्रकार का इसके लिए सही मूल्यांकन करने के लिए।

निम्नलिखित उदाहरण लें

var a = 1;
var b = "1";

if (a == b) //evaluates to true as a and b are both 1
{
    alert("a == b");
}

if (a === b) //evaluates to false as a is not the same type as b
{
    alert("a === b");
}

संक्षेप में; का उपयोग करते हुए == ऑपरेटर उन परिस्थितियों में सत्य का मूल्यांकन कर सकता है जहां आप इसे उपयोग नहीं करना चाहते हैं === ऑपरेटर सुरक्षित होगा।

90% उपयोग परिदृश्य में इससे कोई फर्क नहीं पड़ता कि आप किस का उपयोग करते हैं, लेकिन जब आप एक दिन में कुछ अप्रत्याशित व्यवहार करते हैं तो अंतर जानने में आसान होता है।


73
2018-05-12 12:58



=== बनाम == की तुलना में एक विस्तृत लेख यहां दिया गया है - Zaheer Ahmed