Object.is in JavaScript
Object.is
is a method introduced in ECMAScript 2015 (ES6) that determines whether two values are the same value. It’s a more precise comparison than the traditional ==
(loose equality) or ===
(strict equality) operators in JavaScript. Object.is
aims to provide an accurate comparison algorithm, particularly useful for distinguishing between values like +0
and -0
, and for correctly identifying NaN
values, which traditional comparisons cannot.
Syntax
|
|
value1
: The first value to compare.value2
: The second value to compare.- Returns: A Boolean indicating whether the two arguments are the same value.
Key Differences from ==
and ===
NaN
comparison:Object.is(NaN, NaN)
returnstrue
, whereasNaN === NaN
returnsfalse
. This is useful becauseNaN
is the only JavaScript value that is not equal to itself when using traditional comparison operators.+0
and-0
comparison:Object.is(+0, -0)
returnsfalse
, whereas+0 === -0
returnstrue
. This distinction is important in certain mathematical contexts.
Examples
|
|
When to Use Object.is
vs. ===
- Use
Object.is
when you need to distinguish between+0
and-0
, or when you need to check if a value isNaN
. - Use
===
for most other comparisons, as it is the standard equality operator and covers the majority of use cases without the peculiarities handled byObject.is
.
Object.is
is particularly useful in functional programming and mathematical computations where these distinctions are significant. However, for the majority of equality checks, the strict equality operator ===
remains the most appropriate and efficient choice.