【问题标题】:Please what does mean this : if (a && b == c){};?请问这是什么意思:if (a && b == c){};?
【发布时间】:2019-03-11 16:48:01
【问题描述】:

请问这是什么意思:

if (a && b == c){};

条件语句的逻辑我没看懂

【问题讨论】:

    标签: javascript logical-operators


    【解决方案1】:

    && 的优先级低于==,因此相当于:

    if (a && (b == c))
    

    这意味着如果a 具有真值,并且b 的值等于c 的值。

    【讨论】:

      【解决方案2】:

      条件(a && b == c) 有两个operatorsLogical AND OperatorEquality Operator

      如果操作数 foobar 都具有 truthy 值,则操作 foo && bar 返回 true。

      foo == bar 返回 true,如果 foo 等于 bar

      如果操作数不是同一类型,相等运算符将转换它们,然后应用严格比较。如果两个操作数都是对象,那么当操作数引用内存中的同一个对象时,JavaScript 会比较相等的内部引用。

      如果一个表达式包含多个运算符,operator precedence 是最重要的。

      运算符优先级决定了运算符相互之间的解析方式。高优先级的运算符成为低优先级运算符的操作数。

      == 运算符的优先级高于 && 运算符。因此上述条件将首先检查b == c。如果结果为truea的值为真,则条件的结果为true

      分组运算符( ) 具有最高优先级,因此可用于强制执行特定的操作顺序。

      如果您不确定将处理哪些顺序操作,请使用分组运算符!

      结果

      (a && (b == c)) 
      

      将与

      的结果相同
      (a && b == c)
      

      但可读性更好。当然你应该学习并知道运算符的优先级。但是,如果有疑问,尤其是在有很多运算符的非常复杂的行中,几个括号增加可读性的价值很容易超过几位额外代码的成本。

      【讨论】:

      • 不客气。如果我的回答解决了你的问题,请考虑采纳。
      猜你喜欢
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2017-02-02
      • 2013-12-16
      • 2021-12-24
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多