Symbol() constructor
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.
The Symbol()
function returns primitive values of type Symbol.
Try it
Syntax
Parameters
description
Optional-
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 new
operator will throw a
TypeError
:
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:
const sym = Symbol("foo");
const symObj = Object(sym);
typeof sym; // "symbol"
typeof symObj; // "object"
Specifications
Specification |
---|
ECMAScript Language Specification # sec-symbol-constructor |
Browser compatibility
BCD tables only load in the browser