Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年9月以降、すべてのブラウザーで利用可能です。
String.raw() 静的メソッドは、テンプレートリテラルのためのタグ関数です。この関数は Python の文字列リテラルの r 接頭辞や C# の文字列リテラルの @ 接頭辞に似ています。この関数は、テンプレートリテラルの生の文字列形式を取得するために使用されます。つまり、置換(${foo} など)は行われますが、エスケープ(\n など)は実行されません。
整形式のテンプレートリテラル配列オブジェクト、たとえば { raw: ['foo', 'bar', 'baz'] } などです。文字列の配列風オブジェクトを値として持つ raw プロパティを持っているオブジェクトであるべきです。
sub1, …, subN置換される値が入ります。
templateStringテンプレートリテラルです。オプションで置換文字列 (${...}) を含みます。
指定されたテンプレートリテラルの生の文字列形式です。
第 1 引数に raw プロパティが含まれていなかったり、raw プロパティが undefined または null 出会ったりした場合に発生します。
ほとんどの場合、String.raw() はテンプレートリテラルとともに使用されます。前述の最初の構文は、滅多に使用されません。JavaScript エンジンが(他のタグ関数のように)適切な引数で呼び出すからです。
String.raw() はテンプレートリテラルの唯一の組み込みタグ関数です。既定のテンプレート関数のように動作し、連結を行います。通常の JavaScript コードで再実装することができます。
警告: String.raw を直接「識別」タグとして使用しないでください。この実装方法については識別タグの構築を参照してください。
String.raw() が raw プロパティに length プロパティがないか、正でない length を持つオブジェクトで呼び出された場合、空の文字列 "" を返します。もし substitutions.length < strings.raw.length - 1 (つまり、プレースホルダーを埋めるだけの置換がない - 整形式タグ付きテンプレートリテラルでは起こりえない)場合、残りのプレースホルダーは空の文字列で埋められます。
String.raw テンプレートリテラルと RegExp() コンストラクターを組み合わせることで、次のことが可能になります。 正規表現リテラルでは使用できない、動的な部分を含む正規表現を作成する正規表現のエスケープシーケンスを二重エスケープ (\\) する必要がありません(通常の文字列リテラルでは使用できません)。これは、ファイルパスや URL など、スラッシュが多く含まれている文字列でも役立ちます。
多くのツールは、特定の名前でタグ付けされたリテラルを特別扱いします。
html タグを素朴に実装するためには、次のようにします。
これは、実際は、上記のように動作します。しかし、String.raw は "cooked" 文字列ではなく、生の文字列リテラルを連結するので、エスケープシーケンスは処理されません。
タグが純粋にマークアップのためのもので、リテラルの値を変更しないような「純粋な識別タグ」では、これは望むものではないかもしれません。 この場合、カスタムタグを作成し、"cooked"(つまり、エスケープシーケンスが処理されたs)リテラル配列を String.raw に渡して、生の文字列であるかのように見せかけることができます。
最初の引数は raw プロパティを持つオブジェクトで、その値はテンプレートリテラルの区切られた文字列を表す配列風オブジェクト(length プロパティと整数のインデックスを持つ)であることに注意してください。残りの引数は置き換え用です。raw の値は配列風オブジェクトであれば何でも良いので、文字列であっても構いません。例えば、 'test' は ['t', 'e', 's', 't'] として扱われます。以下は `t${0}e${1}s${2}t` と等価です。
| ECMAScript® 2027 Language Specification # sec-string.raw |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。