DEV Community

Avoid boolean values comparison with "==" in JavaScript

Ashish Mehra on April 14, 2018

All of us use "==" daily for performing the comparison in JavaScript to execute particular code block only when certain condition meets. But do ...
Collapse
 
sirbranedamuj profile image
Zach Thacker •

You should read up on JavaScript equality - it's a very important concept. Much of what you said here is correct but you didn't even touch on the === operator which is usually more acceptable to use than the flawed == operator.

developer.mozilla.org/en-US/docs/W...

Collapse
 
mehraas profile image
Ashish Mehra • • Edited

Yup, the main idea was to explain the working of "==" and the reason why we should avoid boolean value comparison with "==".

Collapse
 
icatalina profile image
Ignacio Catalina •

You should avoid all sort of comparisons using '=='

Thread Thread
 
mehraas profile image
Ashish Mehra •

In some cases '==' is very useful. Like when we have to compare value (String)"10" with value 10(Integer).By using "==" in this case, we don't have to perform any explicit conversion.

Thread Thread
 
gsonderby profile image
Gert Sønderby •

No, do the explicit conversion, then compare strictly. Otherwise you are leaving yourself open to bugs that will be hard to detect. There's literally no case where == is desirable.

Thread Thread
 
mehraas profile image
Ashish Mehra •

Thanks for making the point. :-)

Collapse
 
deen_john profile image
Deen John • • Edited

For unequal types, "==" operator would first coerce the values to Number types

Inputs :

A =10, is number type,
B =true, is boolean type

Code: Which block will run?

if(A == true) {
console.log("if block")
} else {
console.log("else block")
}

Reasoning :

For unequal types, "==" operator would first coerce the values to Number types

"==" would do this coercion A === ToNumber(B)

ToNumber(B) ie ToNumber(true) results in 1

10 === 1 ?

Answer is : "else block" will be printed on console

developer.mozilla.org/en-US/docs/W...

Collapse
 
guneyozsan profile image
Guney Ozsan •

I don't get how people code with Javascript. It's the most dangerous language I've ever seen.