568

PHPで次のようなことができることを私は知っています:

$hello = "foo";
$my_string = "I pity the $hello";

出力:"I pity the foo"

これと同じことがJavaScriptでも可能かどうか疑問に思っていました。連結を使用せずに文字列内で変数を使用すると、より簡潔でエレガントに記述できます。

4

16 に答える 16

1033

テンプレート リテラルを利用して、次の構文を使用できます。

`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.
于 2015-01-22T12:37:22.230 に答える
173

Firefox 34 / Chrome 41 / Safari 9 / Microsoft Edge より前は、いや、これは JavaScript では不可能でした。あなたは頼る必要があります:

var hello = "foo";
var my_string = "I pity the " + hello;
于 2010-07-21T21:30:26.997 に答える
44

Firefox 34 / Chrome 41 / Safari 9 / Microsoft Edge より前では、いいえ。JavaScript 用の sprintf を試して途中まで進めることもできますが、次のようにします。

var hello = "foo";
var my_string = sprintf("I pity the %s", hello);
于 2010-07-21T21:32:27.197 に答える
40

あなたはこれを行うことができますが、それは一般的ではありません

'I pity the $fool'.replace('$fool', 'fool')

本当に必要な場合は、これをインテリジェントに行う関数を簡単に作成できます

于 2010-07-21T21:34:23.697 に答える
4

マイクロテンプレートの補間をしようとしているなら、私はその目的のためにMustache.jsが好きです。

于 2010-07-21T21:32:48.880 に答える
0

2020年の平和の引用:

Console.WriteLine("I {0} JavaScript!", ">:D<");

console.log(`I ${'>:D<'} C#`)
于 2020-01-28T15:09:41.017 に答える