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

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

本文关键字:true JavaScript 返回 null gt 为什么      更新时间:2024-01-22

有人能告诉我为什么下面的代码在JavaScript中返回true吗?

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

null在这种情况下类似于false,它是作为数字的0。CCD_ 4是作为数字的CCD_。

10大(>)。

它们被转换为数字,null给出0true给出1

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

如果不是Type(px)都是String并且类型(py)为字符串,然后为

  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时,true被强制为1,null被强制为0。您可以在此处查看操作员实际工作方式的详细信息

代码不正确,您需要做:

console.log(true > typeof null);

比较运算符">"强制将其左侧和右侧转换为数字。Number(true)是1,Number(null)是0,所以Paradishesion中的内容被视为"1>0",这在结果中总是true。