Symbol() Konstruktor

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 Symbol() Funktion gibt primitive Werte des Typs Symbol zurück.

Probieren Sie es aus

const symbol1 = Symbol();
const symbol2 = Symbol(42);
const symbol3 = Symbol("foo");

console.log(typeof symbol1);
// Expected output: "symbol"

console.log(symbol2 === 42);
// Expected output: false

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

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

Syntax

js
Symbol()
Symbol(description)

Note: Symbol() kann nur ohne new aufgerufen werden. Der Versuch, es mit new zu konstruieren, löst einen TypeError aus.

Parameter

description Optional

Ein String. Eine Beschreibung des Symbols, die für das Debuggen verwendet werden kann, aber nicht, um das Symbol selbst zuzugreifen.

Beispiele

Symbole erstellen

Um ein neues primitives Symbol zu erstellen, schreiben Sie Symbol() mit einem optionalen String als Beschreibung:

js
const sym1 = Symbol();
const sym2 = Symbol("foo");
const sym3 = Symbol("foo");

Der obige Code erstellt drei neue Symbole. Beachten Sie, dass Symbol("foo") den String "foo" nicht in ein Symbol umwandelt. Es erstellt jedes Mal ein neues Symbol:

js
Symbol("foo") === Symbol("foo"); // false

new Symbol()

Der folgende Syntax mit dem new Operator wird einen TypeError auslösen:

js
const sym = new Symbol(); // TypeError

Dies verhindert, dass Autoren ein explizites Symbol Wrapper-Objekt anstelle eines neuen Symbolwerts erstellen, was überraschend sein könnte, da das Erstellen expliziter Wrapper-Objekte um primitive Datentypen im Allgemeinen möglich ist (zum Beispiel, new Boolean, new String und new Number).

Wenn Sie wirklich ein Symbol Wrapper-Objekt erstellen möchten, können Sie die Object() Funktion verwenden:

js
const sym = Symbol("foo");
const symObj = Object(sym);
typeof sym; // "symbol"
typeof symObj; // "object"

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-symbol-constructor

Browser-Kompatibilität

Siehe auch