【问题标题】:alert(new Boolean(false)) vs console.log(new Boolean(false))警报(新布尔值(假))与 console.log(新布尔值(假))
【发布时间】:2015-05-29 12:22:34
【问题描述】:

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

,它应该可以正常工作

【问题讨论】:

  • alert 需要一个字符串,因此它将您的布尔值转换为字符串。这里没有什么奇怪的,按预期工作。

标签: javascript boolean


【解决方案1】:

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

Boolean 对象的toString() 值为truefalse

【讨论】:

  • console.log(Boolean("false")); 它抛出 true 作为输出为什么会这样?
  • @PardeepJain Boolean() 函数会将任何非空字符串转换为true 并将空字符串转换为falseBoolean('false') === trueBoolean('hello') === trueBoolean('') === false
  • 是的,btw thanx 已经找到了相同的解决方案 :) 另一件事 consol.log(Boolean(0)) 也将返回 false 可能是因为布尔值为 false =0 而 true =1。
【解决方案2】:

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

console.log() 也在做这件事,但它以如下布尔原始值的形式显示得更详细一点: {[[PrimitiveValue]]: false}

任何原始值类型都会发生同样的情况。试试new Number(1)

【讨论】:

    【解决方案3】:

    当 Boolean 被用作构造函数时,它不返回原始值,而是返回一个对象,console.log 显示该对象。其中,警报使用为对象定义的 toString 来显示值。

    【讨论】:

      猜你喜欢
      • 2013-12-09
      • 2013-09-11
      • 2022-01-07
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2020-01-05
      • 2013-07-02
      • 1970-01-01
      相关资源
      最近更新 更多