Object.is()

Die statische Methode Object.is() bestimmt, ob zwei Werte derselbe Wert sind.

Probieren Sie es aus

Syntax

js
Object.is(value1, value2)

Parameter

value1

Der erste Wert zum Vergleichen.

value2

Der zweite Wert zum Vergleichen.

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 false

  • 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

    • beide +0
    • beide -0
    • beide NaN
    • oder beide sind ungleich null, nicht NaN und haben denselben Wert

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()

js
// 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

Siehe auch