簡體   English   中英

為什么(true> null)總是在JavaScript中返回true?

[英]Why does (true > null) always return true in JavaScript?

有人可以告訴我為什么以下代碼在JavaScript中返回true?

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

在這種情況下, nullfalse類似,數字為0 true1作為數字。

10大( > )。

它們被轉換為數字, null給出0true給出1

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

如果不是Type( px )都是String而Type( py )是String,那么

  1. nx是調用ToNumber( px )的結果。 因為pxpy是原始值,所以評估順序並不重要。
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM