【问题标题】:(true + false) > 2 + true; Why does this return false?(真 + 假)> 2 + 真;为什么这会返回假?
【发布时间】:2014-02-14 16:35:43
【问题描述】:

我正在研究 javascript,但无法弄清楚为什么此行返回 false:

(true + false) > 2 + true

【问题讨论】:

  • 这段代码有实际用处吗?
  • @RobertHarvey 今天我几乎想链接 jQuery 的 hasClass(),我选择了这个:$($0).hasClass("button") + $($0).hasClass("red") == 2 纯粹是为了好玩,呵呵。

标签: javascript boolean


【解决方案1】:

true 等于 1。false 等于 0。

所以你的表达式相当于:

(1 + 0) > 2 + 1

减少到

1 > 3

这是假的!

【讨论】:

    【解决方案2】:

    那是因为您的代码计算结果为:

    1 + 0 > 2 + 1
    

    相当于:

    1 > 3
    

    这是由于当您对某些类型(例如布尔值)使用算术运算符时,JavaScript 引擎评估和解释 Javascript 的方式,在这种情况下,这些类型被隐式转换为数字。

    【讨论】:

      【解决方案3】:

      原因称为类型强制;您在算术运算中使用了两个布尔值,除非解释器首先将它们转换为数字,否则这是不可行的。

      真 --> 1 假 --> 0

      自己试试吧;输入 +true 你会得到 1;

      【讨论】:

        猜你喜欢
        • 2014-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-01
        • 1970-01-01
        • 2013-11-09
        • 2015-10-05
        相关资源
        最近更新 更多