DEV Community

Symbols in ES6 - A Quick Guide

Ben Mildren on December 07, 2017

Overview Symbols are a new primitive type introduced in ES6. Symbols are completely unique identifiers. Just like its primitive counterparts, t...
Collapse
 
brucknert profile image
Tomas Bruckner

Nice article, but I think there is a typo.

const foo = {
name: 'Ben',
age: 25,

}

for(let val of foo) {
console.log(val) // Ben, 25
}

This should throw TypeError, because objects are not iterable. Maybe you meant for...in ?

Collapse
 
hardy613 profile image
Scott Hardy
for(let val of Object.entries(foo)) {
    console.log(val) // ['name','Ben'], ['age',25]
}

developer.mozilla.org/en-US/docs/W...

Collapse
 
itsjzt profile image
Saurabh Sharma

I still didn't get why symbols are used. can you tell me why they are used?

Collapse
 
mildrenben profile image
Ben Mildren

TLDR: They're used because they are unique. That's it.

Imagine them like any other string except you can guarantee it's unique.

(Also when used as object keys they're enumerable which is nice)

Collapse
 
hardy613 profile image
Scott Hardy

Symbol.for() means Symbols are truly not unique.

Combined with the Symbol iterator Object.getOwnPropertySymbols object Symbols can be exposed

Collapse
 
itsjzt profile image
Saurabh Sharma

Ohh! now I get it. 😀