Shaving Bytes on JavaScript Conditionals
Whenever you work with JavaScript code, it's as though there's always a shorter way to code something. You thought that a code set was basic until you found out that something was basic...er. One of those code shortcuts can be found with conditions, specifically short if clauses.
A typical short if clause would look something like this:
if(callback) {
callback();
}
Oddly enough this conditional can be made shorter:
callback && callback();
The && is less code than the if(){}; of course only by a few characters but does the same job. You could argue that readability suffers but that's up to individual developers.
![CSS vs. JS Animation: Which is Faster?]()
How is it possible that JavaScript-based animation has secretly always been as fast — or faster — than CSS transitions? And, how is it possible that Adobe and Google consistently release media-rich mobile sites that rival the performance of native apps?
This article serves as a point-by-point...
![How to Create a RetroPie on Raspberry Pi – Graphical Guide]()
Today we get to play amazing games on our super powered game consoles, PCs, VR headsets, and even mobile devices. While I enjoy playing new games these days, I do long for the retro gaming systems I had when I was a kid: the original Nintendo...
![CSS Ellipsis Beginning of String]()
I was incredibly happy when CSS text-overflow: ellipsis (married with fixed width and overflow: hidden was introduced to the CSS spec and browsers; the feature allowed us to stop trying to marry JavaScript width calculation with string width calculation and truncation. CSS ellipsis was also very friendly to...
![Create a 3D Animating Sidebar]()
Mozilla's Christian Heilmann is an evangelist that knows how to walk the walk as well as talk the talk. You'll often see him creating sweet demos on his blog or the awesome Mozilla Hacks blog. One of my favorite pieces...
It’s worth noting that JS minifiers like Google’s Closure Compiler will do this for you, so the first option is probably better so you get the readability without sacrificing performance. The Closure Compiler outputs it as this:
callback&&callback();
http://closure-compiler.appspot.com/home
and also jshint might shout about the shorter version (depending on the settings of course).
No one writes code for JSHint :)
It’s bad practice though because the code is hard to maintain, debug and extend. I could write a whole blog on why doing this is bad. I see zero benefits.
Agree with comments above. I recently realized that there is no benefits of having expressions in my code so changed jshint settings and now it disallows to use them.
IMO the expression below is pretty readable and it also takes one line:
if (callback) callback();
Agree with the “bad practice” comments.
Sometimes you seem to post stuff just for the sake of it, or to impress beginners.
I appreciate your honesty but impressing people isn’t something that entertains me.
What if I also need to have an else branch?
There’s only “if”, I suppose. Otherwise it’s something like:
While I agree with people’s comments on code readability, I still appreciate posts like this.
I’ve come across the ‘callback && callback();’ syntax before and had to look up wtf was going on. Had I read this post earlier, I would’ve known :)
@Dan i agree with you, posts like this are handy so you understand when you come across it in a project. Sadly, this is clearly lost on a couple of the previous commenters who already know everything there is to know.
I’m not worried about them.
What setting will make jsHint happy?
Code is better than anything, 2 JsPerf :
– http://jsperf.com/if-statement-verses-and-operator
– http://jsperf.com/ternary-vs-and-or-vs-if-else
Readability is important, but for those who like to hyper-optimize their code, this is a great tip.