Why (null == false) and (null == true) both return false?(为什么 (null == false) 和 (null == true) 都返回 false?)
问题描述
我知道 null 是一个没有属性或函数的对象.
I know that null is an object with no attributes or functions.
但是,我很困惑为什么 console.log(null == false); 和 console.log(null == true); 都返回 false.
However, I am confused that why console.log(null == false); and console.log(null == true); both return false.
null和boolean之间的转换规则是什么?
What are the conversion rules between null and boolean?
推荐答案
这是因为抽象等式比较算法要求如果 Type(x) 或 Type(y) 是表达式 x == y 中的布尔值 那么布尔值应该通过 ToNumber,将 true 转换为 1,将 false 转换为 +0.
This is because the Abstract Equality Comparison Algorithm requires that if Type(x) or Type(y) is a Boolean in the expression x == y then the Boolean value should be coerced to a number via ToNumber, which converts true to 1 and false to +0.
这意味着 true == something 或 something == true 的任何比较都会导致 1 == something 或 something== 1(将 true 和 1 替换为 false 和 +0 替换 false).
This means that any comparison of true == something or something == true results in 1 == something or something == 1 (replacing true and 1 with false and +0 for false).
Null 类型 比较不等于 1 或 +0(实际上, null 只能与抽象等式比较算法中的undefined比较).
The Null type does not compare as equal to either 1 or +0 (in fact, null is only comparable to undefined in the Abstract Equality Comparison Algorithm).
在 MDN 如果您想了解更多,非常值得一看.
There is a detailed discussion of all of the different kinds of equality in JavaScript on MDN that is well worth looking at if you want to know more.
但是,如果你将 null 强制为一个数字,它会强制为 +0 所以 +null == false 实际上返回 true.
However, if you coerce null to a number it is coerced to +0 so +null == false actually returns true.
这篇关于为什么 (null == false) 和 (null == true) 都返回 false?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么 (null == false) 和 (null == true) 都返回 false?
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
