→
文字列の折り込みをします。またはテンプレート文字列処理をします。
この関数は Python の文字列リテラルの r 接頭辞や C# の文字列リテラルの @ 接頭辞に似ています(それでも違いがあります。この問題に関するスレッドの説明を参照してください)。この関数は、テンプレート文字列の生の文字列形式を取得するために使用されます。つまり、置換(例えば ${foo})は行われますが、エスケープ(例えば \n)は実行されません。
織り込む:
callSite | { raw: 'string' } のような、よく形成されたテンプレート呼び出しサイト オブジェクトです。 |
---|---|
substitutions | 置換される値が含まれます。 |
テンプレート文字列処理:
templateString | です。必要に応じて「${…}」を置換します。 |
---|
「`」は0x60。
処理された String。
ほとんどの場合、String.raw() はテンプレート文字列とともに使用されます。上記の最初の構文は、JavaScript エンジンが(他のタグ関数のように)適切な引数で呼び出すので、実際に使用されます。
String.raw() はテンプレート文字列の唯一の組込みタグ関数です。既定のテンプレート関数のように動作し、連結を行います。通常の JavaScript コードで再実装することができます。
D=String.raw`Hi\n${2+3}!`; //='Hi\n5!'
「Hi」の後の文字は改行文字ではありません。「\」と「n」は 2 文字です。
D=String.raw`Hi\u000A!`; //='Hi\u000A!'
こっちも一緒で、今回は、\、u、0、0、0、A の 6 文字を取得します。
すべての種類のエスケープ文字は無効になり、バックスラッシュが出力文字列に表示されます。
これは、文字列の .length プロパティをチェックすることで確認できます。
let name='Bob'; D=String.raw`Hi\n${name}!`; //='Hi\nBob!'。置換が処理されます。
通常、String.raw() を関数として呼び出すことはありません、
ただし、`foo${2 + 3}bar${'Java' + 'Script'}baz` をシミュレートするには、次のようにします:
D=String.raw({ raw: ['foo', 'bar', 'baz'] }, 2 + 3, 'Java' + 'Script'); //='foo5barJavaScriptbaz'
最初の引数が「raw」プロパティを持つオブジェクトであることに注意してください、
その値は、テンプレート リテラルで区切られた文字列を表す iterable です。
残りの引数は織り込む文字列です。
最初の引数の「raw」値は、反復可能な任意の値にすることができます。文字列でも!
例えば、'test' は ['t', 'e', 's', 't'] として扱われます。
以下は `t${0}e${1}s${2}t` と同等です:
D=String.raw({ raw: 'test' }, 0, 1, 2); //='t0e1s2t'