当我们在Javascript中放置false时,为什么valueOf()返回true

Saq*_*med 3 javascript

为什么此语句在嵌套对象中返回true

var value = new Boolean(new Boolean(false)).valueOf();
console.log(value);
Run Code Online (Sandbox Code Playgroud)

我们在创建对象时给出了错误.

gur*_*372 7

为什么此语句在嵌套对象中返回true

因为new Boolean(false)返回一个不是falsey值Boolean对象.

它被评估为

new Boolean(new Boolean(false)).valueOf()

new Boolean(<<Boolean Object false>>).valueOf()

(<<Boolean Object true>>).valueOf()

true

编辑

添加信息@Andreas评论 - 规范如何支持表达式的评估.

ECMA 2015:7.1.13 ToObject(参数) - > 19.3.1布尔构造函数 - > 19.3.1.1布尔值(值) - > 7.1.2 ToBoolean(参数)