Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 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 |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年12月10日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.