String.raw()

String.raw() 静的メソッドは、文字列リテラルのためのタグ関数です。この関数は Python の文字列リテラルの r プレフィックスや C# の文字列リテラルの @ プレフィックスに似ています(それでも違いがあります。この問題に関するスレッドの説明を参照してください)。この関数は、テンプレート文字列の生の文字列形式を取得するために使用されます。つまり、置換(例えば ${foo} )は行われますが、エスケープ(例えば \n )はされません。

構文

String.raw(callSite, ...substitutions)

String.raw`templateString`

引数

callSite
{ raw: 'string' } のような、よく形成されたテンプレート呼び出しサイトオブジェクトです。
...substitutions
置換される値が含まれます。
templateString
テンプレート文字列です。必要に応じて置換します (${...})。

戻り値

与えられたテンプレート文字列の生の文字列形式です。

例外

TypeError
第1 引数が正常に形成されていないオブジェクトの場合、TypeError がスローされます。

説明

ほとんどの場合、String.raw() はテンプレート文字列とともに使用されます。上記の最初の構文は、JavaScript エンジンが、他のタグ関数のように適切な引数で呼び出すので、実際に使用されます。

String.raw() はテンプレート文字列の唯一のビルトインタグ関数です。デフォルトテンプレート関数のように動作し、連結を行います。通常の JavaScript コードで再実装することができます。

String.raw() を使う

String.raw`Hi\n${2+3}!`;
// 'Hi\n5!', the character after 'Hi'
// is not a newline character,
// '\' and 'n' are two characters.

String.raw`Hi\u000A!`;
// 'Hi\u000A!', same here, this time we will get the
//  \, u, 0, 0, 0, A, 6 characters.
// All kinds of escape characters will be ineffective and
// backslashes will be present in the output string.
// You can confirm this by checking the .length property
// of the string.

let name = 'Bob';
String.raw`Hi\n${name}!`;
// 'Hi\nBob!', substitutions are processed.

// Normally you would not call String.raw() as a function,
// but to simulate `t${0}e${1}s${2}t` you can do:
String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'
// Note that 'test', a string, is an array-like object
// The following is equivalent to
// `foo${2 + 3}bar${'Java' + 'Script'}baz`
String.raw({
  raw: ['foo', 'bar', 'baz'] 
}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz'

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
String.raw の定義
標準 初回定義。
ECMAScript Latest Draft (ECMA-262)
String.raw の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
rawChrome 完全対応 41Edge 完全対応 12Firefox 完全対応 34IE 未対応 なしOpera 未対応 なしSafari 完全対応 10WebView Android 未対応 なしChrome Android 完全対応 41Firefox Android 完全対応 34Opera Android 未対応 なしSafari iOS 完全対応 10Samsung Internet Android 完全対応 4.0nodejs 完全対応 4.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報