Javascript Comparison Operators
पर मोज़िला प्रलेखन के अनुसार दो ऑपरेंड एक ही प्रकार के नहीं हैं, जावास्क्रिप्ट ऑपरेंड तो धर्मान्तरित सख्त तुलना लागू होता है। यदि ऑपरेंड नंबर या बूलियन है, तो ऑपरेशंस संख्याओं में कनवर्ट किया गया है; यदि या तो संकार्य एक स्ट्रिंग है, एक दूसरे को एक स्ट्रिंग
में बदला क्या वास्तव में हो रहा है कि तार को संख्याओं में रूपांतरित किया जा रहा है है। उदाहरण के लिए:
1 == '1'
1 == Number('1')
हो जाता है 1 == 1
हो जाता है: true
फिर कोशिश इस एक: true
अगर वे तार होते जा रहे थे, तो आप '1' == '1.'
प्राप्त होता है, जो गलत होगा: 1 == '1.'
1 == Number('1.')
1 == 1
हो जाता हो जाता है ।
यह सिर्फ इतना है कि Number('') == 0
, इसलिए 0 == ''
सच है
+1 बहुत अच्छा - क्या आप जानते हैं कैसे इंजन निर्णय करता है जो डेटाप्रकार कन्वर्ट करने के लिए करते हैं? स्पष्ट रूप से 0 को एक स्ट्रिंग में कनवर्ट करने के समान परिणाम नहीं होंगे। –
यह गलत है - '' 0 में परिवर्तित हो जाएगा, बूलियन 'झूठी' – Christoph
नहीं, मुझे यकीन नहीं है। मुझे संदेह होगा कि यह एक संख्यात्मक प्रकार है, या एक बुलियन कास्ट है। – davethegr8