为什么两个示例的输出与Javascript布尔值不同?

时间:2018-04-22 03:44:45

标签: javascript

EG1:

 var boo = new Boolean(false)
 document.write(boo.valueOf())//false

EG2:

 var boo1 = new Boolean(new Boolean(false))
 document.write(boo1.valueOf())//true

为什么两个例子的输出不同?

顺便说一下:

console.log((new Boolean( new Boolean(false))))//nothing
document.write(new Boolean( new Boolean(false)))//true

为什么控制台里什么都没有?

1 个答案:

答案 0 :(得分:4)

对象很简洁,当你使用new Boolean时,你会调用布尔构造函数,它会返回一个对象。当使用truthy值调用new Boolean时,会生成一个值为true的对象。因此,new Boolean(new Boolean(<anything>))将生成一个值为true的布尔值。

但是不要这样做 - 使用字面布尔值或Boolean(condition)代替。