alert(new Boolean(false)) vs console.log(new Boolean(false))



我想知道为什么alert(new Boolean(false))打印false而不是打印对象作为新的布尔值应该返回对象。如果我使用console.log(new Boolean(false))

它就会正常工作

alert()显示传递给它的参数的.toString()值。

Boolean对象的toString()值为truefalse

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

这就是console.log()也在做的事情,但是它以布尔原始值的形式更详细地显示:{[[PrimitiveValue]]: false}

对于任何原始值类型都将发生相同的情况。试试new Number(1) .

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

最新更新