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。