यह कल्पना के अनुसार है।
12.5 अगर स्टेटमेंट
.....
2. यदि बूलियन (GetValue (exprRef)) सत्य है, तो
ए। पहले कथन का मूल्यांकन करने का परिणाम लौटाएं।
3. और,
....
युक्ति के अनुसार, टूबलियन, है
सार ऑपरेशन टूबूलियन अपने तर्क को टेबल 11 के अनुसार बुलियन के मान में बदल देता है:
और यह तालिका तार के बारे में यह कहती है:
परिणाम गलत है यदि तर्क खाली स्ट्रिंग है (इसकी लंबाई शून्य है); अन्यथा परिणाम सत्य है
अब, यह समझाने के लिए कि "0" == false
आपको समानता ऑपरेटर को क्यों पढ़ना चाहिए, जो बताता है कि अमूर्त ऑपरेशन से इसका मूल्य GetValue(lref)
दाईं ओर के लिए समान है।
जो इस प्रासंगिक भाग का वर्णन करता है:
यदि IsPropertyReference (V) है, तो
ए। यदि HasPrimitiveBase (V) गलत है, तो आधार के [[प्राप्त करें]] आंतरिक विधि होने दें, अन्यथा प्राप्त करें
नीचे दी गई विशेष विधि [[प्राप्त करें]] आंतरिक विधि हो।
ख। आधार को इस मान के रूप में उपयोग करके प्राप्त आंतरिक विधि को कॉल करने का परिणाम लौटाएं, और गुजर रहा है
तर्क के लिए GetReferencedName (V)
या दूसरे शब्दों में, एक स्ट्रिंग में एक आदिम आधार होता है, जो आंतरिक प्राप्त करने की विधि को वापस बुलाता है और गलत दिख रहा है।
यदि आप GetValue ऑपरेशन के उपयोग से चीजों का मूल्यांकन करना चाहते हैं ==
, यदि आप का उपयोग करके मूल्यांकन करना चाहते हैं , तो ToBoolean
उपयोग ===
(जिसे "सख्त" समानता ऑपरेटर भी कहा जाता है)
"0"
एक स्ट्रिंग है, और चूंकि यह खाली नहीं है, इसलिए इसका मूल्यांकन सही है।