if 语句中的多个赋值

Posted

技术标签:

【中文标题】if 语句中的多个赋值【英文标题】:Multiple assignments inside if-statement 【发布时间】: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('耶');

【问题讨论】:

【参考方案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

【讨论】:

以上是关于if 语句中的多个赋值的主要内容,如果未能解决你的问题,请参考以下文章

if 语句中的赋值语句如何作为条件?

在 Typescript 中的 if 语句中限制赋值

if 语句中的变量赋值

可以为Groovy中的if语句中的字段赋值可以使数据库更新记录

C++ if 语句中的变量赋值

c语言中if语句条件为赋值语句