The Ultimate Guide to JavaScript Symbol

The JavaScript ES6 introduced a new primitive data type called Symbol.  Symbols are immutable (cannot be changed) and are unique. we use the Symbol() function to create a Symbol.


const message = Symbol('hello');        

We can check type of symbol-function

const a = Symbol()

console.log(typeof a)     //Output : "symbol"        

For instance, here are two symbols with the same description – they are not equal:

let value1 = Symbol("message");

let value2 = Symbol("message");
console.log(value1 == value2);      //Output : false        

Though value1 and value2 both contain the same description, they are different.

Access Symbol Description

To access the description of a symbol, we use the. operator

const a = Symbol('hello');
console.log(a.description);    // Output : “hello”        

We can also use symbol as a key but it doesnt iterate in for loop.

let id = Symbol("id");

let person = {
    name: "John",
    age: 30,
    [id]: 10
for (let key in person) {

//Output : 

Symbol Methods

There are various methods available with Symbol.

Method Description
for() Searches for existing symbols
keyFor() It returns a shared symbol key from the global symbol registry.
toSource() It returns a string containing the source of the Symbol object
valueOf() It returns the primitive value of the Symbol object.


It returns a key from the symbol.

// get symbol by name
let message = Symbol.for('hello');
let message1 = Symbol.for('world');

// get name by symbol

console.log( Symbol.keyFor(message) );    // Output : hello
console.log( Symbol.keyFor(message1) );   // Output :  id        

Symbol Properties

There are various properties available with Symbol.

Properties Description
description Returns a string containing the description of the symbol
iterator Returns the default iterator for an object
match Matches against a string
replace Replaces matched substrings of a string
search Returns the index within a string that matches the regular expression
split Splits a string at the indices that match a regular expression
species Creates derived objects
const message = Symbol('hello');

// description property

console.log(message.description);   // Output :  hello        
Posted in

Ankit Patel

Leave a Comment

Your email address will not be published.

Scroll to Top