इसका कारण यह है Abstract Equality Comparison Algorithm की आवश्यकता है कि अगर Type(x)
या Type(y)
तो अभिव्यक्ति x == y
में एक बूलियन है बूलियन मान होना चाहिए ToNumber
के माध्यम से एक संख्या के लिए coerced, जोपरिवर्तित करता हैसे 1 और false
से +0
पर।
इसका मतलब है कि 1 == something
या something == 1
में की true == something
या something == true
परिणाम किसी भी तुलना (false
और false
के लिए +0
साथ true
और 1
की जगह)।
The Null type या तो 1 या +0 के बराबर तुलना नहीं करता है (वास्तव में, शून्य केवल एईसीए में undefined
के बराबर है)।
MDN पर जावास्क्रिप्ट में विभिन्न प्रकार की समानता की विस्तृत चर्चा है जो कि आप और जानना चाहते हैं तो यह देखने लायक है।
हालांकि, अगर आप एक नंबर करने के null
विवश यह coerced to +0
तो +null == false
वास्तव में true
देता है।
स्रोत
2014-12-24 06:30:07
वे दोनों बराबर झूठी क्योंकि अशक्त बराबर सही या गलत नहीं है। जैसे '1'' पिज्जा "या' {} 'के बराबर नहीं है। जब की तरह में अकेले इस्तेमाल करता है, तो बयान यह मजबूर हो जाता है झूठी बूलियन है क्योंकि यह एक falsey मूल्य –
अशक्त एक बूलियन शाब्दिक और गलत है है, हो सकता है दोनों uncomparable प्रकार –
रहे हैं, क्योंकि जावास्क्रिप्ट –