为什么(true> null)总是在JavaScript中返回true?

时间:2012-07-23 14:38:59

标签: javascript

有人可以告诉我为什么以下代码在JavaScript中返回true?

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

7 个答案:

答案 0 :(得分:13)

在这种情况下,

nullfalse类似,0为数字。 true1的数字。

1>更大(0)。

答案 1 :(得分:7)

它们被转换为数字,null提供0true提供1

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

  

如果不是Type( px )都是String和   类型( py )是String,然后是

     
      
  1. nx 成为调用ToNumber( px )的结果。因为 px py               是原始价值评估顺序并不重要。
  2.   
  3. ny 成为调用ToNumber( py )的结果。
  4.   
Number(null) //0
Number(true) //1

答案 2 :(得分:2)

可能是因为true = 1 null = 0

答案 3 :(得分:2)

JavaScript在后台执行了很多类型强制,你会发现很多结果都没用(参见http://wtfjs.com/)。

在这种情况下,被强制为1的true大于被强制为0的null。因为1大于0,结果为真。

  

如果其中一个操作数是布尔值,则将布尔操作数转换为   如果为真则为1,如果为假则为+0。

来自MDN

答案 4 :(得分:1)

背后发生的是关系运算符(在这种情况下为>)在进行比较之前执行类型强制。执行ToPrimitive时,true被强制转换为1,null为0。 您可以在此处查看运营商实际工作方式的详细信息here

答案 5 :(得分:0)

代码不正确,您需要这样做:

console.log(true > typeof null);

答案 6 :(得分:0)

比较运算符“>”迫使它的左侧和右侧转换为数字。 Number(true)为1,Number(null)为0,因此paranthesis中的内容被视为“1> 0”,结果始终为true。