Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Object.is()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2015 browserübergreifend verfügbar.

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

js
Object.is(value1, value2)

Parameter

value1

Der erste zu vergleichende Wert.

value2

Der zweite zu vergleichende Wert.

Rückgabewert

Ein boolescher Wert, der angibt, ob die beiden Argumente derselbe Wert sind.

Beschreibung

Object.is() bestimmt, ob zwei Werte derselbe Wert sind. Zwei Werte sind derselbe Wert, wenn eine der folgenden Bedingungen zutrifft:

  • Beide sind undefined.
  • Beide sind null.
  • Beide sind true oder beide sind false.
  • Beide sind Zeichenfolgen gleicher 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
    • beide sind +0,
    • beide sind -0,
    • beide sind NaN,
    • oder beide sind ungleich null, nicht NaN und haben denselben Wert.

Object.is() ist nicht gleichbedeutend mit dem Operator ==. Der Operator == führt vor dem Vergleich auf Gleichheit verschiedene Typumwandlungen auf beiden Seiten durch (wenn diese nicht denselben Typ haben). Dadurch ergibt beispielsweise "" == false den Wert true. Object.is() hingegen wandelt keinen der beiden Werte um.

Object.is() ist auch nicht gleichbedeutend mit dem Operator ===. Der einzige Unterschied zwischen Object.is() und === liegt in der Behandlung von Nullen mit Vorzeichen und NaN-Werten. Der Operator === (ebenso wie der Operator ==) betrachtet die Zahlenwerte -0 und +0 als gleich, betrachtet NaN jedoch nicht als gleich mit sich selbst.

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

Spezifikation
ECMAScript® 2027 Language Specification
# sec-object.is

Browser-Kompatibilität

Siehe auch