首页 > 解决方案 > 为什么`数字(新布尔(假))=== 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

标签: javascript

解决方案


正如@ASDFGerte 提到的。这是因为如果传递了一个对象,则构造函数ToNumber()调用的方法将调用参数。这就是为什么它被视为布尔基元而不是对象的原因。Number().ToPrimitive()


推荐阅读