2012-07-23 18 views
12

क्या कुछ मुझे बता सकते हैं कि जावास्क्रिप्ट में निम्न कोड क्यों सत्य है?जावास्क्रिप्ट में हमेशा सत्य (शून्य> शून्य) क्यों सच होता है?

console.log(true > null); //returns true 
+14

हां क्योंकि शून्य एक झूठी अभिव्यक्ति (फिर * झूठी *) है और तुलना ऑपरेटर इसे _number_ (फिर सत्य = 1 और झूठी = 0) में परिवर्तित कर देगा। –

+2

** @ एड्रियानो ** इसे उत्तर के रूप में पोस्ट करें बस यही है! – elclanrs

+0

http://stackoverflow.com/questions/801032/null-object-in-javascript – diEcho

उत्तर

13

null इस मामले में false की तरह है, जो 0 एक संख्या के रूप है। true एक संख्या के रूप में 1 है।

10 से बड़ा (>) बड़ा है।

+0

उत्तर के लिए धन्यवाद। मैं सोच रहा था कि शून्य === 0 झूठी क्यों है? तब मुझे एहसास हुआ कि इसे मजबूर होना जरूरी है। तो उन लोगों के लिए जिन्हें पूर्ण प्रमाण की आवश्यकता है, कोशिश करें + null === 0 जो सच साबित करने का मूल्यांकन करता है कि वास्तव में शून्य को 0 तक ले जाया गया है। बस सोचा कि यह दूसरों की मदद कर सकता है। – GrantVS

2

हो सकता है क्योंकि true = 1 जहां null = 0

7

वे संख्या में बदल दिए जाते null0 और true देता 1

http://ecma-international.org/ecma-262/5.1/#sec-11.8.5

यदि यह मामला नहीं है देता है कि दोनों प्रकार (पिक्सल) स्ट्रिंग है और टाइप (py) स्ट्रिंग,

  1. NX ToNumber (पिक्सल) बुला का नतीजा हो चलो है तो। क्योंकि पीएक्स और पीई आदिम मूल्य मूल्यांकन आदेश महत्वपूर्ण नहीं हैं।
  2. ny कॉल टूम्बर (पीई) का परिणाम बनें।
Number(null) //0 
Number(true) //1 
0

कोड गलत है, तुम क्या करने की जरूरत है:

console.log(true > typeof null); 
+1

आपको ऐसा क्यों लगता है कि यह गलत है? – Esailija

2

जावास्क्रिप्ट पृष्ठभूमि में प्रकार बलात्कार का एक बहुत करता है और परिणाम का एक बहुत आप aren मिल जाएगा ' टी उपयोगी (देखें http://wtfjs.com/)।

इस मामले में, सत्य जो 1 के रूप में coerced है शून्य से अधिक है जो 0 से coerced है। चूंकि 1 0 से अधिक है परिणाम परिणाम सच है।

तो ऑपरेंड में से एक बूलियन है, बूलियन संकार्य 1 यदि यह सच है और +0 में बदल जाती है अगर यह गलत है।

MDN से।

0

तुलना ऑपरेटर ">" दोनों को बाएं और दाएं तरफ संख्याओं में परिवर्तित करने के लिए मजबूर करता है। संख्या (सत्य) 1 है, संख्या (शून्य) 0 है, तो पैराथेसिस में क्या है "1> 0" के रूप में लिया जाता है, जो परिणाम में हमेशा सत्य होता है।

1

पीछे क्या हो रहा है यह है कि तुलनात्मक ऑपरेटरों (> इस मामले में) तुलना करने से पहले प्रकार जबरदस्ती करते हैं। ToPrimitive करते समय, सत्य को 1 तक ले जाया जाता है, और 0 तक शून्य हो जाता है। आप यहां विवरण देख सकते हैं कि ऑपरेटर वास्तव में कैसे काम करते हैं here

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