2011-08-21 12 views
8

Dlaczego nie mogę zrobić:Wiele zadania wewnątrz if-oświadczenie

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

To nie zadziała albo:

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

Odpowiedz

10

Spróbuj tego (powinno dać wskazówkę):

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

Pierwszeństwo mają domyślnie umieścić zadanie ostatni, tak, że wszyscy instrukcje && są obliczane jako pierwsze. Łatwo to zauważyć, gdy błędnie używasz = zamiast == i ma to sens, jeśli weźmiesz pod uwagę powszechniejsze użycie kombinacji = i &&. –

2

Sprawdź Operator pierwszeństwo Użyj

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

UPD: Nie zapominaj, że poniższy kod nie będzie ustawiony na true bar ponieważ & & jest Short Circuit operator

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

Sample

Powiązane problemy