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

View in English Always switch to English

String() コンストラクター

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。

String コンストラクターは新しい String オブジェクトを生成します。関数として呼び出された場合は、文字列型のプリミティブ値を返します。

構文

js
new String(thing)
String(thing)

メモ: String()new があってもなくても呼び出せますが、効果は異なります。返値を参照してください。

引数

thing

文字列に変換するもの。

返値

String() が関数として(new なしで)呼び出された場合、 value文字列プリミティブに変換されたものを返します。特に、シンボル値は、例外を発生させるのではなく、 "Symbol(description)" に変換されます。ここで、description は、このシンボルのの説明です。

String がコンストラクターとして(new 付きで)呼び出された場合、 value を(シンボルの特別扱いなしで)文字列プリミティブに変換し、 String オブジェクトでラップして返します。これはプリミティブではありません

警告: String をコンストラクターとして使用する場面はほとんど見つからないでしょう。

String コンストラクターと String 関数

String 関数と String コンストラクターは異なる結果を生み出します。

js
const a = new String("Hello world"); // a === "Hello world" is false
const b = String("Hello world"); // b === "Hello world" is true
a instanceof String; // is true
b instanceof String; // is false
typeof a; // "object"
typeof b; // "string"

ここでは、この関数は約束通り(プリミティブ型の)文字列を生成します。 しかし、コンストラクターは String 型(オブジェクトのラッパー)のインスタンスを生成しますので、 String コンストラクターを使用するのは稀だといえます。

String() を用いてシンボルを文字列化

String() はシンボルを文字列に例外を発生させることなく変換することができる唯一の方法です。とても明示的だからです。

js
const sym = Symbol("example");
`${sym}`; // TypeError: Cannot convert a Symbol value to a string
"" + sym; // TypeError: Cannot convert a Symbol value to a string
"".concat(sym); // TypeError: Cannot convert a Symbol value to a string
js
const sym = Symbol("example");
String(sym); // "Symbol(example)"

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-string-constructor

ブラウザーの互換性

関連情報