javascript - 为什么`数字(新布尔(假))=== 0`
问题描述
Boolean(new Boolean(...)) === true
因为new Boolean(...)
是一个对象。
但为什么Number(new Boolean(false)) === 0
( +new Boolean(false) === 0
) 和Number(new Boolean(true)) === 1
? 为什么不NaN
*?
为什么在第一个例子中没有拆箱,但在第二个例子中有它?
*isNaN(Number({})) === true
解决方案
正如@ASDFGerte 提到的。这是因为如果传递了一个对象,则构造函数ToNumber()
调用的方法将调用参数。这就是为什么它被视为布尔基元而不是对象的原因。Number()
.ToPrimitive()
推荐阅读
- express - 在静态文件中将 content-type 设置为 XHTML
- python - 用 tweepy 回复推文
- python - 在 Python 中安装 setuptools 时没有名为“pkg_resources”的模块
- python - 用于非规范键盘输入处理的 Python 模块
- bash - 将文件名中的子字符串附加到 CSV 的每一行
- javascript - Eslint:禁用除 1 条规则之外的所有规则?
- json - 为什么 jq 1.6 不接受这个“if A then B end”语句?
- mapbox - 如何将数据附加到 Mapbox 中的数据集
- unity3d - UI 中的一个按钮,用于在 Unity 中导出控制台日志
- ms-access - 非常老的 VB3(20 多年前)在 Box Win7 32 位教授上运行,需要 DAO Access 2.0 MDB 支持