我想知道为什么alert(new Boolean(false))
打印false而不是打印对象作为新的布尔值应该返回对象。如果我使用console.log(new Boolean(false))
alert()
显示传递给它的参数的.toString()
值。
Boolean
对象的toString()
值为true
或false
alert()
以原始形式显示其值,因为布尔是原始数据类型。然后,它尝试将其转换为字符串,并将输出显示给用户。
这就是console.log()
也在做的事情,但是它以布尔原始值的形式更详细地显示:{[[PrimitiveValue]]: false}
对于任何原始值类型都将发生相同的情况。试试new Number(1)
.
当Boolean用作构造函数时,它不会返回原语,而是返回一个对象,并且console.log显示该对象。其中,as alert使用为对象定义的toString来显示值。