Table of Contents
- Syntax
- Value Comparision
- val1 and val2 are both null
- val1 and val2 are both undefined.
- val1 and val2 are both NaN
- val1 and val2 are both of the same Boolean value i.e. true or false.
- val1 and val2 are referencing the same object.
- val1 and val2 are both non-zero numbers and have the same value.
- val1 and val2 are both either +0 or -0.
- Note on Object.is(), "==" and "==="
Syntax
Object.is(val1, val2)
Parameters
Values to compare val1 and val2.
Return Value
Object.is() returns a Boolean which indicates if val1 is having the same value as val2 or not.
Value Comparision
val1 and val2 are same in case of Object.is() in case of following conditions:
val1 and val2 are both null
let val1 = null; let val2 = null; Object.is(val1, val2) // true
val1 and val2 are both undefined.
let val1 = undefined; let val2 = undefined; Object.is(val1, val2) // true
val1 and val2 are both NaN
let val1 = NaN; let val2 = NaN; Object.is(val1, val2) // true
val1 and val2 are both of the same Boolean value i.e. true or false.
let val1 = true; let val2 = true; Object.is(val1, val2) // true let val3 = false; let val4 = false; Object.is(val3, val4) // true let val5 = true; let val6 = false; Object.is(val5, val6) // false
val1 and val2 are referencing the same object.
let val1 = { name: "Object comparison" }; let val2 = val1; Object.is(val1, val2) // true let val3 = { name: "Object comparison" }; let val4 = { name: "Object comparison" }; Object.is(val3, val4) // false
val1 and val2 are both non-zero numbers and have the same value.
let val1 = 42; let val2 = 42; Object.is(val1, val2) // true
val1 and val2 are both either +0 or -0.
let val1 = +0; let val2 = +0; Object.is(val1, val2) // true let val3 = -0; let val4 = -0; Object.is(val3, val4) // true let val5 = +0; let val6 = -0; Object.is(val5, val6) // false
Note on Object.is(), "==" and "==="
- Object.is() works differently than "==" operator as it does not apply coercions before comparing the values.
console.log(1 == [1]); // true console.log(1 == "1"); // true console.log(Object.is(1, [1])); // false console.log(Object.is(1, "1")); // false
- Object.is() also works differently than "===" operator as the "===" operator treats +0 and -0 as equals and NaN as not equal to itself.
console.log(+0 === -0); // true console.log(Object.is(+0, -0)); // false console.log(NaN === NaN); // false console.log(Object.is(NaN, NaN)); // true
Cover Image: Image by Martin Pyško from Pixabay