このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
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() 関数は、シンボル型のプリミティブ値を返します。
In this article
試してみましょう
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)引数
description省略可文字列。デバッグには使用できるこのシンボルの説明ですが、シンボル自体にはアクセスできません。
例
>シンボルの作成
新しいプリミティブのシンボルを作成するには、解説にあるようにSymbol() を任意の文字列とともに書きます。
js
const sym1 = Symbol();const sym2 = Symbol("foo");const sym3 = Symbol("foo");上記のコードは 3 つの新しいシンボルを生成します。なお、Symbol("foo") は"foo" という文字列をシンボルに変換するわけではないことに注意してください。毎回新しいシンボルを生成します。
js
Symbol("foo") === Symbol("foo"); // falsenew 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> |