Object.is()
Die statische Methode Object.is()
bestimmt, ob zwei Werte derselbe Wert sind.
Probieren Sie es aus
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 beidefalse
-
beide sind Zeichenfolgen derselben Länge mit denselben Zeichen in derselben Reihenfolge
-
beide sind dasselbe Objekt (das bedeutet, dass beide Werte auf dasselbe Objekt im Speicher verweisen)
-
beide sind BigInts mit demselben numerischen Wert
-
beide sind Symbole, die auf denselben Symbolwert verweisen
-
beide sind Zahlen und
Object.is()
ist nicht gleichwertig zum ==
-Operator. Der ==
-Operator wendet verschiedene Typumwandlungen auf beide Seiten an (wenn sie nicht denselben Typ haben), bevor die Gleichheit getestet wird (was zu einem Verhalten wie "" == false
, das true
ergibt, führt). Object.is()
zwingt keinen der beiden Werte.
Object.is()
ist auch nicht gleichwertig zum ===
-Operator. Der einzige Unterschied zwischen Object.is()
und ===
liegt in ihrer Behandlung von vorzeichenbehafteten Nullen (signed zeros
) und NaN
-Werten. Der ===
-Operator (und der ==
-Operator) behandelt die Zahlenwerte -0
und +0
als gleich, betrachtet jedoch NaN
nicht als 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 Language Specification # sec-object.is |
Browser-Kompatibilität
BCD tables only load in the browser