[英]Why does (true > null) always return true in JavaScript?
有人可以告訴我為什么以下代碼在JavaScript中返回true?
console.log(true > null); //returns true
在這種情況下, null
與false
類似,數字為0
。 true
是1
作為數字。
1
比0
大( >
)。
它們被轉換為數字, null
給出0
, true
給出1
http://ecma-international.org/ecma-262/5.1/#sec-11.8.5
如果不是Type( px )都是String而Type( py )是String,那么
- 設nx是調用ToNumber( px )的結果。 因為px和py是原始值,所以評估順序並不重要。
- 讓ny成為調用ToNumber( py )的結果。
Number(null) //0
Number(true) //1
可能是因為true = 1
,其中null = 0
JavaScript在后台執行了很多類型強制,你會發現很多結果都沒用(參見http://wtfjs.com/ )。
在這種情況下,被強制為1的true大於被強制為0的null。因為1大於0,結果為真。
如果其中一個操作數是布爾值,則布爾操作數如果為真則轉換為1,如果為假則轉換為+0。
來自MDN 。
背后發生的是關系運算符(在這種情況下為>
)在進行比較之前執行類型強制。 當進行ToPrimitive
,真正被強制轉換為1,和零到0。您可以在這里檢查的經營者是如何工作的細節在這里
代碼不正確,您需要這樣做:
console.log(true > typeof null);
比較運算符“>”強制將其左側和右側轉換為數字。 Number(true)為1,Number(null)為0,因此paranthesis中的內容被視為“1> 0”,結果中始終為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.