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 语句中的多个赋值的主要内容,如果未能解决你的问题,请参考以下文章