【问题标题】:Multiple assignments inside if-statementif 语句中的多个赋值
【发布时间】:2011-10-31 16:07:25
【问题描述】:

为什么我不能这样做:

var fooElement, barElements; if(fooElement = document.getElementById('foo') && barElements = fooElement.getElementsByTagName('bar') && barElements[0] && barElements[0].onclick) { console.log(barElements[0].onclick); }

这也不行:

var foo,酒吧; if(foo = true && bar = true) { console.log('耶'); }

【问题讨论】:

    标签: javascript if-statement variable-assignment


    【解决方案1】:

    试试这个(它应该会给你一个线索):

    var foo, bar;
    if((foo = true) && (bar = true))
    {
        console.log('yay');
    }
    

    【讨论】:

    • 默认优先级是把赋值放在最后,这样所有的&&语句都会先计算。当您错误地使用 = 而不是 == 时,这一点很容易看出,如果您考虑更常见的 = 和 && 组合的用法,这很有意义。
    【解决方案2】:

    检查运算符优先级,使用

    if((foo = true) && (bar = true))
    {
        alert(foo);
    }
    

    UPD:不要忘记以下代码不会将 bar 设置为 true,因为 && 是 Short Circuit 运算符

    if((foo = false) && (bar = true))
    {
        alert(foo);
    }
    

    Sample

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 2015-07-15
      • 2021-08-13
      • 2020-08-07
      • 1970-01-01
      • 2020-01-20
      相关资源
      最近更新 更多