25443


PHPだと、

[code]

    $hoge = "ほげ";
    $huga = "ああああああ{$hoge}いいいい";
    
[/code]

> 結果: ああああああほげいいいい

というような記述が出来ると思いますが、JavaScript(jQuery)で似たような記述方法ってあるでしょうか？  
検索したのですが、見つけられなかったため質問です。


CC BY-SA 3.0
2016-06-03T14:56:45.170
25425
2016-06-17T00:51:45.797
7966
question
javascript jquery
JavaScript(jQuery)における文字列中に変数を記述する方法ってあるでしょうか？


ES2015(ES6) から導入された Template Literals がまさにその機能です。通常文字列リテラルに使われる `''`' `""`
の代わりに ```` で囲み、その中に `${ }` で囲んだ式を埋め込むことができます。

[Template strings - JavaScript |
MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/template_strings)

[code]

    var hoge = "ほげ";
    document.write(`ああああああ${hoge}いいいい<br/>`);
    
    var foo = 16;
    document.write(`${foo} * 2 = ${foo * 2}`);
[/code]

対応状況としてはInternetExplorerとAndroidBrowser、iOS8以前のSafariで使えないぐらいで、最新のモダンブラウザであれば普通に使うことができます。

<https://kangax.github.io/compat-table/es6/#test-template_literals>

それ以前のブラウザでも動かしたい場合、あるいはHTML出力などでエスケープ処理が必要な場合は、テンプレートエンジンを使うことになるかと思います。jQueryでもそのような機能は持ち合わせていません。


CC BY-SA 3.0
2016-06-04T10:54:52.767
25443
2016-06-04T10:54:52.767
8000
25425
answer


old IEなども対応しなければならない状況なら、underscore.js#template がいいかもしれません.  
<http://underscorejs.org/#template>

[code]

    <script src="underscore.js"></script>
    <script>
      (function() {
        var myStr = '!hello world!';
        var myTemplate = _.template('result: <%= variableNameInTemplate1 %>');
    
        // "result: !hello world!"
        console.log(myTemplate({variableNameInTemplate1: myStr}));
      })();
    </script>
    
[/code]

babelなどのトランスパイラも必要なく、単独で動作するので手軽です.

1行程度の操作なら文字列連結で済ませるのがよいです.  
HTML片の出力のような、大きな文字列を生成するなら一考に値すると思います.


CC BY-SA 3.0
2016-06-15T09:23:50.563
26764
2016-06-15T09:23:50.563
9796
25425
answer


sprintf関数がなさそうなので、replaceを利用する方法もよいかもしれません。

[code]

    var $hoge = "ほげ";
    var $huga = "ああああああ%hogeいいいい".replace("%hoge", $hoge);
    
[/code]


CC BY-SA 3.0
2016-06-17T00:51:45.797
26804
2016-06-17T00:51:45.797
16809
25425
answer