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

js
Object.is(value1, value2)

Parameter

value1

Der erste Wert, der verglichen werden soll.

value2

Der zweite Wert, der verglichen werden soll.

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 sind false

  • 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

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

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

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® 2025 Language Specification
# sec-object.is

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
is

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch