こんにちは、ともです。
最近JavaScriptを独学していまして、ES2015から追加されたSymbolオブジェクトについての理解をまとめておこうと思います。
Symbolオブジェクトとは
Symbolとは名前の通り、モノの名前を作成する型です。
常に一意に決まるモノの名前をSymbolは与えてくれます。
具体的なコードを見ていきます。
const Monday = 1;
let week = Monday;
if (week === Monday) {
console.log('今日は月曜日です。');
}
と
const Monday = Symbol();
let week = Monday;
if (week === Monday) {
console.log('今日は月曜日です。');
}
上記2つのコードを考えて見ます。
ここで、Mondayはその名前が重要であることが分かります。
Mondayに『1』を代入することは思わぬ危険があるかもしれませんが、Symbol()により名前を与えれば安全に一意の名前を与えることができます。
- Symbol([desc])、desc…シンボルの説明
という風にSymbol命令は利用することができます。より詳しい説明は下記が参考になります。
new Symbol()
でシンボルを作成することはできないことに注意です。
一意なのかの確認
const Sunday = Symbol();
const Monday = Symbol();
if (Sunday === Monday) {
console.log('SundayとMondayは同じ');
} else {
console.log('SundayとMondayはユニーク');
}
このようにSymbol();
によりシンボルを作成しました。
一見、SundayとMondayは同じ値となりそうです。
しかし、Symbol()
で与えられた変数は一意となりますので、ここではSundayとMondayは区別されます。
まとめ
Symbolオブジェクトを利用することにより
- 一意の名前を与えることができる
ということが分かりました。適切な箇所でSymbolを利用していきたいです。