为什么(true>null)在JavaScript中总是返回true
Why does (true > null) always return true in JavaScript?
有人能告诉我为什么下面的代码在JavaScript中返回true吗?
console.log(true > null); //returns true
null
在这种情况下类似于false
,它是作为数字的0
。CCD_ 4是作为数字的CCD_。
1
比0
大(>
)。
它们被转换为数字,null
给出0
,true
给出1
http://ecma-international.org/ecma-262/5.1/#sec-11.8.5
如果不是Type(px)都是String并且类型(py)为字符串,然后为
- 设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
时,true被强制为1,null被强制为0。您可以在此处查看操作员实际工作方式的详细信息
代码不正确,您需要做:
console.log(true > typeof null);
比较运算符">"强制将其左侧和右侧转换为数字。Number(true)是1,Number(null)是0,所以Paradishesion中的内容被视为"1>0",这在结果中总是true。
相关文章:
- JavaScript-切换“;全部检查”;复选框true/false
- JavaScript:只有当数组中的所有项都为true时才执行函数
- 如果函数返回True,则显示Javascript按钮
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 在JavaScript中为true==1和false==0
- 获取Javascript中单选按钮的true或false
- JavaScript函数未返回true
- 为什么 javascript 返回对象位置 true 或 false
- 在 JavaScript 中,为什么 []==false 为 true
- 当我们使用Javascript提交表单时,IsPostBack始终为True
- javascript输出true中的hasOwnProperty方法
- 阻止表单提交 javascript 为什么有一个明显的错误语句返回 true
- Javascript似乎在说true ==false
- 为什么在我的javascript中没有正确推送是true
- Javascript/jQuery等待变量true
- 从OnClientClick调用函数时,在JavaScript中返回true
- Javascript验证不起作用——只要一个if语句为true,它就会停止所有if语句
- 为什么(true>null)在JavaScript中总是返回true
- 如果上一个字符串为true,则返回false,否则为true-javascript
- 只有当模式在整个字符串中匹配时,Regex测试才应该返回true.Javascript