Shaving Bytes with JavaScript Booleans

By  on  

Developers are always search for ultimate way to create something with the least amount of code.  This, of course, is one of the reasons we use minifiers: to serve code as small as possible.  Of course this practice has numerous benefits, like faster download time, less storage consumption, etc.  One way that minifiers are able to shave bytes off of JavaScript code is changing the way booleans are used.

true === !0 // Save 2 chars

false === !1 // Save 3 chars

A few bytes of every true and false go away with the ! evaluation.  If you set one-letter variables names to those values, you may end up saving more.  Keep in mind I'm not telling you to do this in your source code -- minifiers like Uglify JS will do this for you.  Just something neat to know about though!

Recent Features

  • By
    5 Awesome New Mozilla Technologies You’ve Never Heard Of

    My trip to Mozilla Summit 2013 was incredible.  I've spent so much time focusing on my project that I had lost sight of all of the great work Mozillians were putting out.  MozSummit provided the perfect reminder of how brilliant my colleagues are and how much...

  • By
    9 Mind-Blowing Canvas Demos

    The <canvas> element has been a revelation for the visual experts among our ranks.  Canvas provides the means for incredible and efficient animations with the added bonus of no Flash; these developers can flash their awesome JavaScript skills instead.  Here are nine unbelievable canvas demos that...

Incredible Demos

  • By
    MooTools dwCheckboxes Plugin

    Update / Fix: The checkboxes will no longer toggle when the "mouseup" event doesn't occur on a checkbox. Every morning I wake up to a bunch of emails in my Gmail inbox that I delete without reading. I end up clicking so many damn checkboxes...

  • By
    Send Email Notifications for Broken Images Using jQuery AJAX

    It's usually best to repair broken image paths as soon as possible because they can damage a website's credibility. And even worse is having a user tell you about it. Using jQuery and PHP, you can have your page automatically notify you of broken...

Discussion

  1. Glad you aren’t advocating coding like this directly. Can’t beat true/false for readability.

  2. Roman

    Coercions like Number to Boolean doesn’t affect performance?

  3. Maybe too simple of a test: http://jsperf.com/bool-num-test

    Looks like using !0 and !1 may be faster (in Chrome 35) but only marginally.

    • MaxArt

      Even if that’s true, and it’s not due to some statistical error, the gain is so small it’s not really worth it.

    • Those are noops anyway. I would be surprised if the JS engine just optimise them away at compile time.

    • didn’t just*

  4. Still prefer true/false for readability. As you said, it is better to let the Minifier to do this for us. It is better to keep the true/false in our code.

  5. I expect the gain to be lost as soon as the file gets gzipped. I am wrong?

  6. oresh

    You should also remember the bitwise operations like
    !~number, that returns true only for -1

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!