Javascript

【JavaScript】Symbolオブジェクトとは

こんにちは、ともです。

最近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命令は利用することができます。より詳しい説明は下記が参考になります。

Symbol | MDN

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を利用していきたいです。