Por qué no puedo hacer esto:tareas múltiples en el interior de la sentencia if
var fooElement, barElements; if(fooElement = document.getElementById('foo') && barElements = fooElement.getElementsByTagName('bar') && barElements[0] && barElements[0].onclick) { console.log(barElements[0].onclick); }
Esto no funcionará bien:
var foo, bar; if(foo = true && bar = true) { console.log('yay'); }
La prioridad por defecto son para poner la última asignación, por lo que todos las declaraciones && se calculan primero. Esto es fácil de ver cuando usas erróneamente = en lugar de ==, y tiene sentido si consideras el uso más común de las combinaciones de = y &&. –