2014-06-11 7 views
5

मैं इस बंद एक जेफ Atwood tweet के पीछे जो अशक्त के निम्नलिखित परिणामों/जावास्क्रिप्ट में शून्य तुलना से पता चलता पूछ रहा हूँ:जावास्क्रिप्ट शून्य शून्य तुलना अंतर के पीछे तर्क क्या है?

null zero comparison in javascript

मैं इस से पहले और की तरह मनोरंजक यह है के रूप में देखा है, मैं सोच रहा हूं कि वास्तव में व्यवहार के पीछे तर्क या तर्क है या नहीं?

+2

मेरा मतलब है, स्पेक ऑपरेटर व्यवहार बताता है: http://es5.github.io/#x11.8 (मुझे हर परिदृश्य के लिए पथों का पालन करने की तरह महसूस नहीं होता) – Ian

+0

आपका उदाहरण और http पर एक त्वरित नज़र : //zero.milosz.ca/ '===' का उपयोग करने के महत्व के लिए अच्छे कारण प्रदान करते हैं जबतक कि आप ** बिल्कुल नहीं जानते ** आप ढीले तुलना का उपयोग क्यों करना चाहेंगे। – LexJacobs

उत्तर

7

0 == null कभी भी true नहीं है। "ढीली तुलना" के साथ null केवल अपने या undefined के बराबर है।

हालांकि, रिलेशनल ऑपरेटर अपने ऑपरेटरों को पहले नंबरों में परिवर्तित कर देता है, यदि इनमें से कोई भी संख्या है। इसलिए, 0 एक संख्या है, null एक संख्या में परिवर्तित हो गया है। और null पर गणितीय मान 0 है। तो तुम अंत

0 > 0  // nope 
0 >= 0 // yes 
0 == null // nope, null is only equal to null and undefined 
0 <= 0 // yes 
0 < 0  // nope 

की तुलना ये नियम सभी ECMAScript specification में परिभाषित कर रहे हैं (चाहे वे कोई मतलब है या नहीं एक अलग प्रश्न है)।

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