SymbolはES2015から新たに導入されたプリミティブデータ型の1つ。
プリミティブデータ型とはオブジェクトではないデータ型のことで、文字列、数値、真偽値、null、undefined、そしてSymbolがある。
SymbolはSymbol関数によってのみ作成することができ、シンボルの実体は決して競合しないユニークなキーのようなもの(文字列ではない)。
const sym1 = Symbol();
const sym2 = Symbol();
console.log(sym1); // [object Symbol] { ... }
console.log(sym1 === sym2); // false
const sym3 = Symbol('example');
console.log(sym3.toString()); // Symbol(example)
Symbolはオブジェクトのプロパティのキーとして使用することができるため、名前の衝突を回避することに活用することができる。
ウェルノウンシンボル
JavaScriptにであらかじめ定義されているビルトインシンボルのこと。
言語内部のふるまいに使用している。
例:Symbol.iterator(for…of で使用されている)