【问题标题】:Why does `true ||1 === 1/3` returns true in JavaScript?为什么 `true ||1 === 1/3` 在 JavaScript 中返回 true?
【发布时间】:2015-10-02 08:56:37
【问题描述】:

我知道=== 运算符用于确定其两个操作数是否相等且相同。也就是说,如果左侧操作数为 1,则右侧操作数必须为 1 才能返回 true。但我不明白为什么 javascript 在这个计算中返回 true。

true || 1 === 1/3;

//true;

我不明白这个结果在 JavaScript 中是如何实现的。

【问题讨论】:

  • 因为你的断言的第一部分是true,而操作符是OR,所以第二部分永远不会被评估。 (OR 返回第一个真正的操作数)
  • 如果你觉得这个问题对你来说很无聊,请原谅我。其实我是非常初学 js 的人。
  • “真”和“1/3”是否相等且相同?
  • 试试这个alert(true || trash==good); 之后就没什么问题了true

标签: javascript boolean-expression


【解决方案1】:

=== 操作永远不会被检查。 true 的说法是正确的。

另请参阅this 问答,了解如何评估 if 语句。

【讨论】:

    【解决方案2】:

    ||意味着或。 'True or false' 总是评估为真。

    【讨论】:

      【解决方案3】:

      1 === 1/3false

      ||OR

      所以你的:true || 1 === 1/3; -> truefalsetrue

      【讨论】:

        【解决方案4】:

        我知道 === 运算符用于确定其两个操作数是否相等且相同

        “真”和“1/3”是否相等且相同?

        从问题和评论看来,你错误地认为表达的意思是

        (true || 1) === 1/3;
        

        true1/3 确实 相等且相同,因此预期结果将是错误的。但它没有,因为||=== 具有lower precedence。所以解析如下:true || (1 === 1/3);.

        Javascript(和大多数其他类 C 语言)中的逻辑表达式是 short-circuited,因此在确定结果后,不会计算剩余的表达式。这意味着最终结果将是正确的

        【讨论】:

          【解决方案5】:

          您的代码归结为:

          true || 1 === 1/3 (false)

          true || false

          由于布尔运算符|| 将在任一条件为真时返回真,因此您最终将得到真。

          【讨论】:

            猜你喜欢
            • 2019-12-07
            • 2018-01-31
            • 1970-01-01
            • 2019-01-09
            • 2023-01-16
            • 1970-01-01
            • 1970-01-01
            • 2015-01-16
            • 2014-07-03
            相关资源
            最近更新 更多