【问题标题】:Javascript: the confuse about comparison "2 == true"Javascript:关于比较“2 == true”的困惑
【发布时间】:2013-05-24 07:24:11
【问题描述】:

这是一个 javascript 比较:

2 == true //false

据说,之所以返回false,是因为比较将true转换为Number数据类型,结果为1:

console.info(Number(true)) // 1

我的困惑是,为什么比较不将数字 2 转换为 Boolean 数据类型

console.info(Boolean(2)) // true

2 == true 结果可能是true

【问题讨论】:

  • 这都是关于类型转换和虚假和真实值的。它不是将值转换为布尔值...查看一下,然后您就会明白。

标签: javascript comparison


【解决方案1】:

我在这里找到文档:

Comparison Operators,其中说:

如果两个操作数的类型不同,JavaScript 会将 然后操作数应用严格比较。如果任一操作数是数字 或布尔值,如果可能,操作数将转换为数字;别的 如果任一操作数是字符串,则将另一个操作数转换为 如果可能的话,字符串。如果两个操作数都是对象,那么 JavaScript 比较操作数引用时相等的内部引用 内存中的同一个对象。

【讨论】:

    【解决方案2】:

    == 进行隐式转换以进行比较。在这种情况下,2 是数字,true 是布尔值。转换规则是“在将数字与布尔值进行比较时,布尔值将被转换为数字”因此

    true 转换为 1

    和 2 == 1 将是错误的。

    //similarly, 
    2 == false; //false
    

    因为 false 会被转换为 0 并且 2 也不能等于 0。

    但是,1 == 正确。出于与 true 相同的原因,将转换为 1 和 1==1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多