Javascript 警报(新布尔值(错误))与控制台日志(新布尔值(错误))

Javascript 警报(新布尔值(错误))与控制台日志(新布尔值(错误)),javascript,boolean,Javascript,Boolean,我想知道为什么alert(new Boolean(false))打印false而不是打印object,因为新的Boolean应该返回object。如果我使用console.log(新的布尔值(false))alert()显示传递给它的参数的.toString()值,它就会正常工作 Boolean对象的toString()值要么是true要么是falsealert()以原语形式显示其值,因为Boolean是一种原语数据类型。然后,它尝试将其转换为字符串,并向用户显示输出 这就是console.lo

我想知道为什么
alert(new Boolean(false))
打印false而不是打印object,因为新的Boolean应该返回object。如果我使用
console.log(新的布尔值(false))
alert()
显示传递给它的参数的
.toString()
值,它就会正常工作

Boolean
对象的
toString()
值要么是
true
要么是
false

alert()
以原语形式显示其值,因为Boolean是一种原语数据类型。然后,它尝试将其转换为字符串,并向用户显示输出

这就是
console.log()
也在做的事情,不过它以布尔原语值的形式显示得更详细一些,如下所示:
{[[PrimitiveValue]]:false}


任何基元值类型都会发生同样的情况。尝试
newnumber(1)

当布尔值用作构造函数时,它不返回原语,而是返回一个对象,console.log显示该对象。其中as alert使用为对象定义的toString来显示值

警报
需要一个字符串,因此它会将布尔值转换为字符串。这里没有什么奇怪的地方,工作正常。
console.log(Boolean(“false”)
它会抛出true作为输出,为什么会这样?@PardeepJain在
Boolean()
函数中将任何非空字符串转换为
true
,空字符串转换为
false
Boolean('false')==true
Boolean('hello')==true
Boolean(''>)===false
。是的,找到了相同的解决方案,顺便说一句:)还有一件事
consol.log(布尔值(0))
也将返回
false
可能是因为布尔值为false=0,而true=1。