繁体   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