一意な Symbol を作成する
必ず一意になる値を生成します。
「一意な Symbol を作成する」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全4レッスンが含まれています。
Symbolとは
Symbolは、現代のJavaScriptで導入されたプリミティブ型です。2つのSymbolが同じ説明を持っていても、各Symbolは一意です。
const s = Symbol()
console.log(typeof s)Symbolを作成する
Symbol関数を呼び出すとSymbolを作成できます。これはコンストラクターではないため、newは決して使いません。
const id = Symbol()
console.log(typeof id)説明は任意
デバッグに役立つ説明文字列を渡すことができます。説明は情報を示すだけで、一意性には影響しません。
const id = Symbol("user id")
console.log(id.description)すべてのSymbolは一意
説明が同じであっても、2つのSymbolが等しくなることはありません。この保証された一意性が、Symbolの特徴です。
const a = Symbol("x")
const b = Symbol("x")
console.log(a === b)newキーワードは使わない
Symbolをnewとともに呼び出すとエラーになります。Symbolはオブジェクトではなくプリミティブだからです。必ず通常の関数として呼び出します。
const s = Symbol("ok")
console.log(typeof s === "symbol")Symbolはプリミティブ
Symbolのtypeofは文字列のsymbolです。他のプリミティブと同様に、Symbolは不変で、変更できるプロパティを持ちません。
const s = Symbol("p")
console.log(typeof s)説明を読み取る
descriptionプロパティは指定したテキストを返します。指定していない場合はundefinedを返します。このプロパティは読み取り専用です。
const named = Symbol("hello")
const anon = Symbol()
console.log(named.description)
console.log(anon.description)シンボルは文字列に暗黙変換されない
シンボルは文字列に暗黙的に変換されないため、意図しない使い方を防げます。文字列を明示的に取得するには、String または toString を使います。
const s = Symbol("tag")
console.log(String(s))
console.log(s.toString())シンボルを定数として使う
シンボルは、決して衝突しない異なる状態を表すなど、一意な定数値として非常に適しています。
const RED = Symbol("red")
const GREEN = Symbol("green")
console.log(RED === GREEN)シンボルを保存する
シンボルは変数や配列に保存したり、オブジェクト内の値として使ったりできます。一意性もそのまま保たれます。
const states = [Symbol("on"), Symbol("off")]
console.log(states.length)
console.log(states[0] === states[1])一意性が重要な理由
どのシンボルも衝突しないため、他のコードと決して競合させたくないキーに最適です。次のレッスンで詳しく説明します。
const key1 = Symbol("meta")
const key2 = Symbol("meta")
const obj = {}
obj[key1] = "a"
obj[key2] = "b"
console.log(obj[key1], obj[key2])クイックチェック
シンボルの作成方法に関する知識を確認しましょう。
まとめ
まとめ: シンボルは一意なプリミティブ値です。
- Symbol を呼び出して作成し、new では作成しません
- 任意の説明はデバッグの補助にのみ役立ちます
- すべてのシンボルは一意です
- シンボルの typeof は symbol です
const a = Symbol("x")
const b = Symbol("x")
console.log(a === b)よくある質問
「一意な Symbol を作成する」レッスンは無料ですか?
はい。「一意な Symbol を作成する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全4レッスンが含まれています。
「一意な Symbol を作成する」で何を学びますか?
必ず一意になる値を生成します。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
JavaScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「一意な Symbol を作成する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJavaScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 一意な Symbol を作成する
- オブジェクトのキーとして Symbol を使う
- グローバル Symbol レジストリ
- ウェルノウン Symbol