【问题标题】:Does operator precedence matter for && and == in javascrtipt?运算符优先级对于 JavaScript 中的 && 和 == 是否重要?
【发布时间】:2009-03-26 21:47:11
【问题描述】:

更具体地说,是否有一组值(a、b 和 c)在语句中对运算符优先级很重要:

var value = (a && b == c);

(NaN 除外)。

【问题讨论】:

    标签: javascript operators operator-precedence


    【解决方案1】:

    是的

    js> false && true == false
    false
    js> (false && true) == false
    true
    

    由于== 的优先级高于&&,因此第一个被解析为false && (true == false),相当于false && false,因此计算结果为false。第二个相当于false == false,也就是true

    【讨论】:

    【解决方案2】:

    解析语言,使您的语句等同于(a && (b == c))。相等运算符将始终在&&|| 和其他逻辑运算符之前运行。你可以找到细节here

    【讨论】:

    • 是的,我明白这一点,但我试图弄清楚它是否对那个具体的例子有影响。
    【解决方案3】:

    是的。 ==&& 绑定得更紧密,所以你的绑定是什么

    var val = a && ( b == c)
    

    here。所以a==0b==1c==0 是假的,而(a&&b)==c 是真的。

    (修正错字。该死。)

    【讨论】:

    • a=1, b=0, c=0 in a && b == c 将给出 1 && (0 == 0) => 1 && true => true
    猜你喜欢
    • 2016-01-16
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2020-03-05
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    相关资源
    最近更新 更多