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.