如何在Javascript中替换模板字符串中的变量?

时间:2016-06-09 21:12:24

标签: javascript templates ecmascript-6

这是我想要实现的目标。

let something = 'first string';
let template = `asdf=${something}asdf`;

some.method(template)
    .then(function() {
       let something = 'new string';
       console.log(template); 
       // does not return 'asdf=new stringasdf' like expected
    });

我如何保留模板,但是在我想要的时候(在范围内的函数内)切换出一个变量?

2 个答案:

答案 0 :(得分:1)

模板基本上是简写:

let template = "asdf=" + something + "asdf";

因此,它会在模板本身出现在代码中的位置进行评估。

我认为你想要使用一个功能:

let template = function(something) { return `asdf=${something}asdf`; }

然后你可以这样做:

some.method(template(something)).then(function() { let something = 'new string'; console.log(template(something)); });

答案 1 :(得分:0)

检查我写下的这个功能:

GitHub:https://github.com/tjcafferkey/stringinject/blob/master/src/index.js

NPM:https://www.npmjs.com/package/stringinject

允许您执行以下操作:

var str = "This is a {0} string for {1}"
var newStr = stringInject(str, ["test", "stringInject"]);

// This is a test string for stringInject