Несколько присваиваний внутри оператора if - PullRequest
8 голосов
/ 21 августа 2011

Почему я не могу сделать это:

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');
}

Ответы [ 2 ]

10 голосов
/ 21 августа 2011

Попробуйте (это должно дать вам подсказку):

var foo, bar;
if((foo = true) && (bar = true))
{
    console.log('yay');
}
2 голосов
/ 21 августа 2011

Проверьте приоритет оператора, используйте

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

UPD: не забывайте, что следующий код не установит для bar значение true, поскольку && является оператором Short Circuit

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

Пример

...