2011-08-21 65 views
8

为什么我不能做到这一点:多任务里面的if语句

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

这也不行:

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

回答

10

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

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

默认的优先级是把分配最后,让所有的首先计算&&语句。当你错误地使用=而不是==时,这很容易看出来,如果你考虑更常见的使用=和&&的组合,这是很有意义的。 –

2

检查运算符优先级,使用

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

UPD:不要忘了,下面的代码不会设置bar为true,因为& &是Short Circuit操作

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

Sample