JavaScript idiom: !something && function()

Correct. This is (ab)using short-circuit evaluation. A boolean expression is only executed as far as is needed to determine the result. In your example, if svg.bottom is non-null, then !svg.bottom is false, and the result of the && is false, so execution of the right hand side does not happen. It's basically equivalent to if(!svg.bottom)svg.bottom = this;


When you have boolean operations, the compiler start check one by one each condition, and stops when its sure for the results - for example if you ask

if(a && b && c)
{    
}

if a is false, then the full boolean question is false, and compiler did not need to check b and c. This compiler feature is used to short the writing code for some cases.

This is (for me) a bad practice that writing code like.

!variable && function() 

instead of

if(!variable) function();

try to minimize the size of the javascript ?

Difficult to debug, and difficult to find what actually dose in many cases.

See this similar code.

unsigned uCycleCheckBox(unisgned uCur)
{
  return ((uCur <= 1) ? (uCur?0:1) : (uCur==4)?2:(uCur+1));
}

is the same think... hard to understand, hard to debug, hard to change and fix in case of problems.

For the comments on that, I suggest to read the books, Writing Solid Code, and Debugging the development process.

Writing solid code is more important than everything else.

Tags:

Javascript