PHPで次のようなことができることを私は知っています:
$hello = "foo";
$my_string = "I pity the $hello";
出力:"I pity the foo"
これと同じことがJavaScriptでも可能かどうか疑問に思っていました。連結を使用せずに文字列内で変数を使用すると、より簡潔でエレガントに記述できます。
PHPで次のようなことができることを私は知っています:
$hello = "foo";
$my_string = "I pity the $hello";
出力:"I pity the foo"
これと同じことがJavaScriptでも可能かどうか疑問に思っていました。連結を使用せずに文字列内で変数を使用すると、より簡潔でエレガントに記述できます。
テンプレート リテラルを利用して、次の構文を使用できます。
`String text ${expression}`
テンプレート リテラルは、二重引用符または単一引用符の代わりにバックティック (` `) (グレイブ アクセント) で囲みます。
この機能は ES2015 (ES6) で導入されました。
例
var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b}.`);
// "Fifteen is 15.
それはどれほどきれいですか?
ボーナス:
また、エスケープせずに JavaScript で複数行の文字列を使用できるため、テンプレートに最適です。
return `
<div class="${foo}">
...
</div>
`;
この構文は古いブラウザー (主に Internet Explorer) ではサポートされていないため、Babel /Webpack を使用してコードを ES5 にトランスパイルし、どこでも実行できるようにすることをお勧めします。
サイドノート:
IE8+ から、内部で基本的な文字列フォーマットを使用できますconsole.log
:
console.log('%s is %d.', 'Fifteen', 15);
// Fifteen is 15.
Firefox 34 / Chrome 41 / Safari 9 / Microsoft Edge より前は、いや、これは JavaScript では不可能でした。あなたは頼る必要があります:
var hello = "foo";
var my_string = "I pity the " + hello;
Firefox 34 / Chrome 41 / Safari 9 / Microsoft Edge より前では、いいえ。JavaScript 用の sprintf を試して途中まで進めることもできますが、次のようにします。
var hello = "foo";
var my_string = sprintf("I pity the %s", hello);
あなたはこれを行うことができますが、それは一般的ではありません
'I pity the $fool'.replace('$fool', 'fool')
本当に必要な場合は、これをインテリジェントに行う関数を簡単に作成できます
マイクロテンプレートの補間をしようとしているなら、私はその目的のためにMustache.jsが好きです。
2020年の平和の引用:
Console.WriteLine("I {0} JavaScript!", ">:D<");
console.log(`I ${'>:D<'} C#`)