可以告訴我爲什麼下面的代碼在JavaScript中返回true?爲什麼(true> null)在JavaScript中總是返回true?
console.log(true > null); //returns true
可以告訴我爲什麼下面的代碼在JavaScript中返回true?爲什麼(true> null)在JavaScript中總是返回true?
console.log(true > null); //returns true
null
是像在這種情況下false
,至極是0
爲數字。 true
是1
作爲一個數字。
1
比0
大(>
)。
感謝您的回答。我想知道爲什麼是null === 0 false?然後我意識到它需要被強制。所以對於那些需要絕對證明的人來說,嘗試+ null === 0,其結果爲真,證明null確實被強制爲0.只是認爲這可能有助於其他人。 – GrantVS 2013-10-15 11:16:54
可能是因爲true = 1
其中null = 0
它們被轉換成數字,null
給0
和true
給1
http://ecma-international.org/ecma-262/5.1/#sec-11.8.5
如果情況並非如此,這兩個類型(PX)是字符串,並且 類型(py)是字符串,然後
- 讓NX是調用ToNumber(PX)的結果。因爲px和py 是原始值評估順序並不重要。
- 讓ny是調用ToNumber(py)的結果。
Number(null) //0
Number(true) //1
的JavaScript做了很多類型強制的背景和大量的結果,你會發現AREN」 t很有用(見http://wtfjs.com/)。
在這種情況下,被強制爲1的真值大於被強制爲0的空值。由於1大於0,結果爲真。
如果操作數中的一個是布爾值,布爾操作數轉換爲 1,如果它是真實的,0,如果它是假的。
從MDN。
比較運算符「>」強制它的左側和右側轉換爲數字。 Number(true)是1,Number(null)是0,所以paitance中的內容被取爲「1> 0」,結果總是爲真。
後面發生的事情是關係運算符(在這種情況下爲>
)在執行比較之前執行類型強制轉換。在執行ToPrimitive
時,true被強制爲1,null爲0。 您可以在此處查看操作員實際工作方式的詳細信息here
是的,因爲null是僞造表達式(然後* false *),比較運算符會將其轉換爲_number_(然後爲true = 1和false = 0)。 – 2012-07-23 14:41:30
** @阿德里亞諾**發佈它的答案就是這樣! – elclanrs 2012-07-23 14:42:11
http://stackoverflow.com/questions/801032/null-object-in-javascript – diEcho 2012-07-23 14:42:20