0
0
JavascriptHow-ToBeginner · 3 min read

How to Use Object.is in JavaScript: Syntax and Examples

Object.is is a method in JavaScript that compares two values for strict equality, similar to === but with special handling for NaN and signed zeros. Use Object.is(value1, value2) to check if both values are the same, including edge cases where === fails.
📐

Syntax

The syntax for Object.is is simple:

  • Object.is(value1, value2): Compares value1 and value2 for strict equality.
  • Returns true if the values are the same, false otherwise.

This method treats NaN as equal to NaN and distinguishes between +0 and -0.

javascript
Object.is(value1, value2)
💻

Example

This example shows how Object.is compares values differently than ===:

javascript
console.log(Object.is('hello', 'hello')); // true
console.log(Object.is(0, -0));       // false
console.log(Object.is(NaN, NaN));     // true
console.log(Object.is(42, '42'));     // false
console.log(Object.is({}, {}));       // false (different objects)
Output
true false true false false
⚠️

Common Pitfalls

Many developers expect Object.is to behave exactly like ===, but it differs in two key cases:

  • NaN comparison: NaN === NaN is false, but Object.is(NaN, NaN) is true.
  • Signed zero: +0 === -0 is true, but Object.is(+0, -0) is false.

Use Object.is when you need these precise comparisons.

javascript
console.log(+0 === -0);          // true
console.log(Object.is(+0, -0));  // false

console.log(NaN === NaN);         // false
console.log(Object.is(NaN, NaN)); // true
Output
true false false true
📊

Quick Reference

Comparison Case=== ResultObject.is Result
Same string valuestruetrue
Different objectsfalsefalse
NaN vs NaNfalsetrue
+0 vs -0truefalse
Number vs stringfalsefalse

Key Takeaways

Use Object.is to compare values with special cases like NaN and signed zeros.
Object.is(NaN, NaN) returns true, unlike === which returns false.
Object.is distinguishes +0 and -0, while === treats them as equal.
For most cases, === works fine, but use Object.is for precise equality checks.
Object.is compares primitives and references strictly without type coercion.