Symbol.for()

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 Symbol.for() durchsucht ein laufzeitweites Symbol-Register nach vorhandenen Symbolen mit dem angegebenen Schlüssel und gibt dieses zurück, falls gefunden. Andernfalls wird ein neues Symbol mit diesem Schlüssel im globalen Symbol-Register erstellt.

Probieren Sie es aus

console.log(Symbol.for("bar") === Symbol.for("bar"));
// Expected output: true

console.log(Symbol("bar") === Symbol("bar"));
// Expected output: false

const symbol1 = Symbol.for("foo");

console.log(symbol1.toString());
// Expected output: "Symbol(foo)"

Syntax

js
Symbol.for(key)

Parameter

key

String, erforderlich. Der Schlüssel für das Symbol (wird auch als Beschreibung des Symbols verwendet).

Rückgabewert

Ein vorhandenes Symbol mit dem angegebenen Schlüssel, falls gefunden; andernfalls wird ein neues Symbol erstellt und zurückgegeben.

Beschreibung

Im Gegensatz zu Symbol() erstellt die Funktion Symbol.for() ein Symbol, das in einer globalen Symbol-Registry verfügbar ist. Symbol.for() erstellt auch nicht unbedingt bei jedem Aufruf ein neues Symbol, sondern prüft zuerst, ob ein Symbol mit dem angegebenen key bereits im Register vorhanden ist. Falls ja, wird dieses Symbol zurückgegeben. Falls kein Symbol mit dem angegebenen Schlüssel gefunden wird, erstellt Symbol.for() ein neues globales Symbol.

Beispiele

Verwendung von Symbol.for()

js
Symbol.for("foo"); // create a new global symbol
Symbol.for("foo"); // retrieve the already created symbol

// Same global symbol, but not locally
Symbol.for("bar") === Symbol.for("bar"); // true
Symbol("bar") === Symbol("bar"); // false

// The key is also used as the description
const sym = Symbol.for("mario");
sym.toString(); // "Symbol(mario)"

Um Namenskonflikte mit Ihren globalen Symbolschlüsseln und anderen (in Bibliotheken genutzten) globalen Symbolen zu vermeiden, könnte es eine gute Idee sein, Ihre Symbole mit einem Präfix zu versehen:

js
Symbol.for("mdn.foo");
Symbol.for("mdn.bar");

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-symbol.for

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
for

Legend

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

Full support
Full support

Siehe auch