Differences between ==, === and Object.is() in JavaScript
== Loose Equality
The == operator performs type coercion before comparing values
-
console.log(1 == "1");// true -
console.log(0 == false);// true -
console.log(undefined == null);// true
=== Strict Equality
It doesn’t perform type coercion or value conversion, but there are two notable behaviors to be aware of:
-
console.log(+0 === -0);// true -
console.log(NaN === NaN);// false
Object.is() Same-Value Equality
As the name suggests, it compares if two values are the same. Despite starting with “Object”, it can compare any two values.
Unlike ===, Object.is() handles the special cases of zero and NaN differently:
-
console.log(Object.is(+0, -0));// false -
console.log(Object.is(NaN, NaN));// true
Reference
What Is the Difference Between ==, === and Object.is in JavaScript?| ExplainThis