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 September 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 boolean, der angibt, ob die beiden Argumente derselbe Wert sind oder nicht.
Beschreibung
Object.is()
bestimmt, ob zwei Werte derselbe Wert sind. Zwei Werte sind gleich, wenn einer der folgenden Punkte zutrifft:
- beide
undefined
- beide
null
- beide
true
oder beidefalse
- beides Strings gleicher Länge mit denselben Zeichen in derselben Reihenfolge
- beide dasselbe Objekt (das bedeutet, dass beide Werte auf dasselbe Objekt im Speicher verweisen)
- beide BigInts mit demselben numerischen Wert
- beide Symbole, die auf denselben Symbolwert verweisen
- beide Zahlen und
Object.is()
ist nicht gleich dem ==
-Operator. Der ==
-Operator wendet verschiedene Konvertierungen auf beide Seiten an (wenn sie nicht vom gleichen Typ sind), bevor er auf Gleichheit testet (was zu Verhaltensweisen wie "" == false
führt, die true
ergeben), aber Object.is()
konvertiert keinen der beiden Werte.
Object.is()
ist auch nicht gleich dem ===
-Operator. Der einzige Unterschied zwischen Object.is()
und ===
liegt in ihrer Behandlung von Vorzeichen-Nullen und NaN
-Werten. Der ===
-Operator (und der ==
-Operator) behandelt die Zahlenwerte -0
und +0
als gleich, behandelt jedoch NaN
als nicht gleich.
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® 2026 Language Specification # sec-object.is |