Documentación offline JavaScript main

Symbol() constructor

main Documentación oficial Licencia CC-BY-SA-2.5Descargado el 2026-08-02

En esta página

The Symbol() function returns primitive values of type Symbol.

{{InteractiveExample("JavaScript Demo: Symbol() constructor", "taller")}}

```js interactive-example 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-nolint
Symbol()
Symbol(description)

[!NOTE] Symbol() can only be called without new. Attempting to construct it with new throws a {{jsxref("TypeError")}}.

Parameters#

  • description {{optional_inline}}
  • : A string. A description of the symbol which can be used for debugging but not to access the symbol itself.

Examples#

Creating symbols#

To create a new primitive symbol, you write Symbol() with an optional string as its description:

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

The above code creates three new symbols. Note that Symbol("foo") does not coerce the string "foo" into a symbol. It creates a new symbol each time:

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

new Symbol()#

The following syntax with the {{jsxref("new")}} operator will throw a {{jsxref("TypeError")}}:

```js example-bad const sym = new Symbol(); // TypeError

This prevents authors from creating an explicit `Symbol` wrapper object
instead of a new symbol value and might be surprising as creating explicit wrapper
objects around primitive data types is generally possible (for example,
`new Boolean`, `new String` and `new Number`).

If you really want to create a `Symbol` wrapper object, you can use the
`Object()` function:

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

Specifications#

{{Specifications}}

Browser compatibility#

{{Compat}}

See also#