Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 標準組み込みオブジェクト
  5. Symbol
  6. Symbol()

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

Symbol() コンストラクター

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年9月⁩.

Symbol() 関数は、シンボル型のプリミティブ値を返します。

試してみましょう

const symbol1 = Symbol();const symbol2 = Symbol(42);const symbol3 = Symbol("foo");console.log(typeof symbol1);// 予想される結果: "symbol"console.log(symbol2 === 42);// 予想される結果: falseconsole.log(symbol3.toString());// 予想される結果: "Symbol(foo)"console.log(Symbol("foo") === Symbol("foo"));// 予想される結果: false

構文

js
Symbol()Symbol(description)

メモ:Symbol()new 付きで呼び出すことができません。new を付けて構築しようとすると、TypeError が発生します。

引数

description省略可

文字列。デバッグには使用できるこのシンボルの説明ですが、シンボル自体にはアクセスできません。

シンボルの作成

新しいプリミティブのシンボルを作成するには、解説にあるようにSymbol() を任意の文字列とともに書きます。

js
const sym1 = Symbol();const sym2 = Symbol("foo");const sym3 = Symbol("foo");

上記のコードは 3 つの新しいシンボルを生成します。なお、Symbol("foo")"foo" という文字列をシンボルに変換するわけではないことに注意してください。毎回新しいシンボルを生成します。

js
Symbol("foo") === Symbol("foo"); // false

new Symbol()

以下のようにnew 演算子を伴う構文では、TypeError が発生します。

js
const sym = new Symbol(); // TypeError

一般的に他のプリミティブデータ型は明示的なラッパーオブジェクトを作成することは可能ですが(例えば、new Boolean,new String,new Number)、新しいシンボル値の代わりに明示的にSymbol ラッパーオブジェクトを作成することはできません。

本当にSymbol のラッパーオブジェクトを生成したい場合は、Object() 関数を使用することができます。

js
const sym = Symbol("foo");const symObj = Object(sym);typeof sym; // "symbol"typeof symObj; // "object"

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-symbol-constructor

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp