【问题标题】:Why does 2 && 3 results in 3 (javascript)? [duplicate]为什么 2 && 3 结果为 3 (javascript)? [复制]
【发布时间】:2015-07-26 23:50:21
【问题描述】:

当我在浏览器的控制台中输入时:

console.log(2 && 3)

结果总是第二个数字(在本例中为 3):

3

谁能解释一下为什么?

【问题讨论】:

    标签: javascript logic logical-operators


    【解决方案1】:

    如果&& 的左侧计算为假值,则整个表达式计算为左侧。

    否则它评估为右手边。

    2 是一个真值,所以2 && 33

    为了比较,请尝试console.log(0 && 1)console.log(false && "something")

    【讨论】:

      【解决方案2】:

      如果所有其他值都是真值,&& logical operator 将返回最后一个值,否则它将返回第一个非真值。

      所以在你的情况下,因为 2 是真实的,那么它将评估 3 并且因为它是真实的,所以它将被返回。

      2 && 0 && 4 以同样的方式返回 0,因为它是一个非真实值。

      Logical Operator

      逻辑运算符通常与布尔(逻辑)值一起使用。 当它们存在时,它们返回一个布尔值。但是,&& 和 || 运算符实际上返回指定操作数之一的值, 因此,如果这些运算符与非布尔值一起使用,它们可能 返回一个非布尔值。

      【讨论】:

        【解决方案3】:

        && 必须计算所有表达式。 2 && 3 将首先评估2 的“真实性”,这是一个真实值,但随后它也必须评估3。然后返回最后一个评估值。如果至少有一个值不真实,则返回第一个这样的值。

        另一方面,

        || 返回第一个真实表达式,如果没有真实表达式,则返回最后一个非真实表达式。

        && 返回最后一个可能值的原因是它只需要检查 所有 表达式以返回结果。 || 不必这样做。如果|| 的第一个表达式为真,它将忽略所有其他表达式。同样,如果&& 的第一个表达式为假,它将忽略所有其他表达式(请参阅逻辑运算符中的短路)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-18
          • 2020-01-23
          • 1970-01-01
          • 1970-01-01
          • 2020-08-05
          • 2019-01-09
          • 1970-01-01
          相关资源
          最近更新 更多