What is the correct way to check for equality between Strings in JavaScript?
You can check the equality of two Strings in Java using the equals() method. This method compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.
Use the strict inequality (! ==) operator to check if two strings are not equal to one another, e.g. a !== b .
The difference between == and === is that: == converts the variable values to the same type before performing comparison. This is called type coercion. === does not do any type conversion (coercion) and returns true only if both values and types are identical for the two variables being compared.
In JavaScript, strings can be compared based on their “value”, “characters case”, “length”, or “alphabetically” order: To compare strings based on their values and characters case, use the “Strict Equality Operator (===)”.
always Until you fully understand the differences and implications of using the ==
and ===
operators, use the ===
operator since it will save you from obscure (non-obvious) bugs and WTFs. The "regular" ==
operator can have very unexpected results due to the type-coercion internally, so using ===
is always the recommended approach.
For insight into this, and other "good vs. bad" parts of Javascript read up on Mr. Douglas Crockford and his work. There's a great Google Tech Talk where he summarizes lots of good info: http://www.youtube.com/watch?v=hQVTIJBZook
Update:
The You Don't Know JS series by Kyle Simpson is excellent (and free to read online). The series goes into the commonly misunderstood areas of the language and explains the "bad parts" that Crockford suggests you avoid. By understanding them you can make proper use of them and avoid the pitfalls.
The "Up & Going" book includes a section on Equality, with this specific summary of when to use the loose (==
) vs strict (===
) operators:
To boil down a whole lot of details to a few simple takeaways, and help you know whether to use
==
or===
in various situations, here are my simple rules:
- If either value (aka side) in a comparison could be the
true
orfalse
value, avoid==
and use===
.- If either value in a comparison could be of these specific values (
0
,""
, or[]
-- empty array), avoid==
and use===
.- In all other cases, you're safe to use
==
. Not only is it safe, but in many cases it simplifies your code in a way that improves readability.
I still recommend Crockford's talk for developers who don't want to invest the time to really understand Javascript—it's good advice for a developer who only occasionally works in Javascript.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With