2010-07-30 15 views

उत्तर

17

संबंधपरक ऑपरेटर (>= और <=), प्रकार बलात्कार (ToPrimitive) करते हैं, Number का संकेत प्रकार के साथ, सभी रिलेशनल वर्तमान ऑपरेटरों इस व्यवहार है ।

आप The Abstract Relational Comparison Algorithm में इस प्रक्रिया के आंतरिक विवरण देख सकते हैं।

दूसरी ओर, Equals operator (==), एक संकार्य है अगर null यह केवल रिटर्न true यदि अन्य या तो null या undefined है, कोई सांख्यिक प्रकार बलात्कार किया जाता है।

null == undefined; // true 
null == null; // true 

चेक The Abstract Relational Comparison Algorithm में इस प्रक्रिया के भीतरी विवरण।

अनुशंसित लेख:

+0

ठीक है। ">", "<" शून्य के रूप में शून्य का मूल्यांकन करें। "==" नहीं। धन्यवाद। – Eonil

+0

अन्य दिलचस्प बात यह है कि एक> = बी का मूल्यांकन नहीं किया जाता है ((ए> बी) || (ए == बी)) लेकिन जैसा! (एक <बी)।यह बताता है कि क्यों शून्य> = 0> या == जैसा नहीं है। – bschandramohan

2

जब अशक्त एक अंकीय experession इसे 0 पर evalutes, जो आपके बताते हैं प्रयोग किया जाता है> और> = मामलों।

== अधिक सूक्ष्म है। अनौपचारिक रूप से, शून्य शून्य के समान नहीं है, इसलिए यह समझ में आता है।

+0

[यह] (http://bclary.com/2004/11/07/#a-11.8) इन ऑपरेटरों का उपयोग करने में किए गए कदमों को समझने के लिए एक बहुत ही उपयोगी लिंक है। अभी भी पागल तर्क की व्याख्या नहीं करता है, लेकिन meh ... – Stephen

4

सापेक्ष तुलना ऑपरेटर एक संख्यात्मक संदर्भ दर्शाते हैं, इसलिए उन मामलों में (>, >=) null को एक संख्या (शून्य) में परिवर्तित कर दिया गया है।

== मामले में, हालांकि, दोनों मानों को बूलियन मानों के रूप में माना जाता है, और जावास्क्रिप्ट को नहीं लगता कि null किसी अन्य "गलत" मानों के बराबर होना चाहिए। यह अजीब तरह का है। == के लिए समानता एल्गोरिदम विशेष मामलों का एक समूह है, और null उनमें से एक है। यह केवल == है और undefined है।

0

दिलचस्प! ऐसा लगता है जैसे जावास्क्रिप्ट को >== और <== जैसे कुछ नए पहचान ऑपरेटर की आवश्यकता है। हालांकि मुझे यकीन नहीं है कि > और < के संख्यात्मक प्रभाव दिए जाने पर, अधिक समझदारी होगी।

यह उम्मीद परिणाम देता है ...

(null > 0 || null === 0); 
संबंधित मुद्दे