Object.is()
En esta página
The Object.is() static method determines whether two values are the same value.
{{InteractiveExample("JavaScript Demo: Object.is()")}}
```js interactive-example console.log(Object.is("1", 1)); // Expected output: false
console.log(Object.is(NaN, NaN)); // Expected output: true
console.log(Object.is(-0, 0)); // Expected output: false
const obj = {}; console.log(Object.is(obj, {})); // Expected output: false
## Syntax
```js-nolint
Object.is(value1, value2)
Parameters#
value1- : The first value to compare.
value2- : The second value to compare.
Return value#
A boolean indicating whether or not the two arguments are the same value.
Description#
Object.is() determines whether two values are the same value. Two values are the same if one of the following holds:
- both {{jsxref("undefined")}}
- both
null - both
trueor bothfalse - both strings of the same length with the same characters in the same order
- both the same object (meaning both values reference the same object in memory)
- both BigInts with the same numeric value
- both symbols that reference the same symbol value
- both numbers and
- both
+0 - both
-0 - both {{jsxref("NaN")}}
- or both non-zero, not {{jsxref("NaN")}}, and have the same value
Object.is() is not equivalent to the == operator. The == operator applies various coercions to both sides (if they are not the same type) before testing for equality (resulting in such behavior as "" == false being true), but Object.is() doesn't coerce either value.
Object.is() is also not equivalent to the === operator. The only difference between Object.is() and === is in their treatment of signed zeros and NaN values. The === operator (and the == operator) treats the number values -0 and +0 as equal, but treats {{jsxref("NaN")}} as not equal to each other.
Examples#
Using Object.is()#
// Case 1: Evaluation result is the same as using ===
Object.is(25, 25); // true
Object.is("foo", "foo"); // true
Object.is("foo", "bar"); // false
Object.is(null, null); // true
Object.is(undefined, undefined); // true
Object.is(window, window); // true
Object.is([], []); // false
const foo = { a: 1 };
const bar = { a: 1 };
const sameFoo = foo;
Object.is(foo, foo); // true
Object.is(foo, bar); // false
Object.is(foo, sameFoo); // true
// Case 2: Signed zero
Object.is(0, -0); // false
Object.is(+0, -0); // false
Object.is(-0, -0); // true
// Case 3: NaN
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true
Specifications#
{{Specifications}}
Browser compatibility#
{{Compat}}