DEV Community

Cover image for True Is Not Always True In JavaScript

True Is Not Always True In JavaScript

Bibek on May 14, 2021

Hello everyone๐Ÿ‘‹ In this article, I will try to explain the behavior of the boolean data type of JavaScript. We often use if statements in JavaScr...
Collapse
 
cariehl profile image
Cooper Riehl

My background is in more strictly-typed languages like C++ and C#, and the whole "truthy vs falsy" concept still throws me off whenever I write JavaScript. The !! syntax in particular makes me gag every time I see it! I know what it's doing, it just looks so odd compared to the other languages I've worked with. Maybe I just need more JavaScript experience...

Anyway, thanks for sharing!

Collapse
 
bibekkakati profile image
Bibek

Yeah. You will get used to it.

Collapse
 
jonrandy profile image
Jon Randy ๐ŸŽ–๏ธ • Edited

"...but it is always better to handle pure boolean values."

Totally disagree, it just demonstrates a lack of understanding of the JavaScript language and makes code more verbose than is necessary

Collapse
 
bibekkakati profile image
Bibek

If you are working on a JavaScript stack on both client and server side then it's fine but with different tech stack, sometimes you may encounter some unexpected bugs.

Collapse
 
jonrandy profile image
Jon Randy ๐ŸŽ–๏ธ

Agreed, but this article is specifically about JS

Thread Thread
 
bibekkakati profile image
Bibek

Yeah. I myself don't use that syntax often.

Collapse
 
mdor profile image
Marco Antonio Dominguez

I disagree with this.

The falsy values are just:

  • undefined
  • null
  • 0 (-0, 0, +0)
  • NaN
  • empty strings ("", '', ``)
  • false

The document.all is an exception and I won't even use this in a codebase. If you try the typeof operator returns an "undefined", that's the reason no the function itself. Also, this is used by older browsers and is equivalent to document.getElementById.

In addition, "always better to handle pure boolean values." shows the lack of understanding about JS. falsy objects are helpful and the ability to coerce types makes it easier to work with them, with and without TS.

Collapse
 
eljayadobe profile image
Eljay-Adobe

These are also falsy:

โ€ข ``
โ€ข document.all
Enter fullscreen mode Exit fullscreen mode

The last is an object, which is falsy, in HTML JavaScript.

Collapse
 
bibekkakati profile image
Bibek

Hey, thank you for pointing that out. I have added these two.

Collapse
 
lonlilokli profile image
Lonli-Lokli

How did you created this paragraph list of 4 items in the beginning of the post?

Collapse
 
siddharthshyniben profile image
Siddharth

It's called a series.

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
bibekkakati profile image
Bibek

My pleasure!

Collapse
 
siddharthshyniben profile image
Siddharth

You know, the title was kind of misleading. True is always true in JavaScript, right?

Collapse
 
bibekkakati profile image
Bibek

Actually, it's kind of confusing but good to grab attention ๐Ÿ˜‰.

Collapse
 
bibekkakati profile image
Bibek

Happy to know that you got to learn something new. ๐Ÿ˜Š