admin管理员组

文章数量:1316393

Why can't I do this:

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

This won't work either:

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

Why can't I do this:

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

This won't work either:

var foo, bar;
if(foo = true && bar = true)
{
    console.log('yay');
}
Share Improve this question asked Aug 21, 2011 at 17:14 TyiloTyilo 30.2k41 gold badges122 silver badges201 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 10

Try this (it should give you a clue):

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

Check Operator Precedence,Use

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

UPD: Don't forget that following code will not set bar to true because && is Short Circuit operator

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

Sample

本文标签: javascriptMultiple assignments inside ifstatementStack Overflow