Symbol

Symbol(description) Symbol.for(key)

Erzeugt einen eindeutigen Wert – jeder Aufruf von Symbol() liefert einen anderen, auch mit derselben Beschreibung. Er dient als Schlüssel von Eigenschaften, die nicht mit anderen kollidieren und in Object.keys() oder JSON nicht aufgeführt werden.

Parameter

  • description – optional, ein Text zur Fehlersuche (symbol.description).
  • Symbol.for(key) – gibt ein gemeinsames Symbol aus der globalen Registry zurück (gleicher Schlüssel = gleiches Symbol).

Rückgabewert

Ein Wert vom Typ symbol.

Beispiele

const id = Symbol('id');
const user = { name: 'Jana', [id]: 42 };
console.log(user[id], Object.keys(user), JSON.stringify(user));
console.log(Symbol('id') === Symbol('id'), Symbol.for('app') === Symbol.for('app'), id.description);

Ausgabe:

42 [ 'name' ] {"name":"Jana"}
false true id

Eigenes Durchlaufen eines Objekts mit einer for...of-Schleife über Symbol.iterator:

const range = {
  from: 1,
  to: 4,
  *[Symbol.iterator]() {
    for (let i = this.from; i <= this.to; i++) yield i;
  },
};
console.log([...range]);

Ausgabe:

[ 1, 2, 3, 4 ]

Worauf Sie achten sollten

  • Ein Symbol lässt sich nicht durch Verketten in eine Zeichenkette umwandeln ('' + symbol wirft einen TypeError) – verwenden Sie String(symbol) oder description.
  • Eigenschaften mit einem Symbol sind nicht geheim: Object.getOwnPropertySymbols() gibt sie zurück.

Browserunterstützung

Baseline – weithin verfügbar: in allen gängigen Browsern seit September 2015, gilt als weithin verfügbar seit März 2018. Ab Version: Chrome 38, Firefox 36, Safari 9; Node.js 0.12.0. Stand: Oktober 2026 (MDN browser-compat-data).

Siehe auch:
typeof
String()
Map