0Pricing
JavaScript Academy · レッスン

一意な 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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 一意な Symbol を作成する
  2. オブジェクトのキーとして Symbol を使う
  3. グローバル Symbol レジストリ
  4. ウェルノウン Symbol
← JavaScript Academyに戻る