Object.is()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die statische Methode Object.is()
bestimmt, ob zwei Werte derselbe Wert sind.
Probieren Sie es aus
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
Object.is(value1, value2)
Parameter
Rückgabewert
Ein boolescher Wert, der angibt, ob die beiden Argumente denselben Wert haben oder nicht.
Beschreibung
Object.is()
bestimmt, ob zwei Werte derselbe Wert sind. Zwei Werte sind gleich, wenn einer der folgenden Punkte zutrifft:
-
beide sind
undefined
-
beide sind
null
-
beide sind
true
oder beide sindfalse
-
beide sind Strings der gleichen Länge mit denselben Zeichen in derselben Reihenfolge
-
beide sind dasselbe Objekt (das heißt, beide Werte verweisen auf dasselbe Objekt im Speicher)
-
beide sind BigInts mit demselben numerischen Wert
-
beide sind Symbole, die auf denselben Symbolwert verweisen
-
beide sind Zahlen und
Object.is()
ist nicht gleich dem ==
-Operator. Der ==
-Operator wendet verschiedene Typumwandlungen auf beide Seiten an (wenn sie nicht denselben Typ haben), bevor er die Gleichheit prüft (was zu einem Verhalten wie "" == false
ergibt true
führt), aber Object.is()
nimmt keine Typumwandlung vor.
Object.is()
ist ebenfalls nicht gleich dem ===
-Operator. Der einzige Unterschied zwischen Object.is()
und ===
liegt in der Behandlung von Vorzeichen-Nullen und NaN
-Werten. Der ===
-Operator (und auch der ==
-Operator) behandelt die Zahlenwerte -0
und +0
als gleich, betrachtet jedoch NaN
als ungleich zu sich selbst.
Beispiele
Verwendung von 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
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-object.is |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
is |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support