这是我想要实现的目标。
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
});
我如何保留模板,但是在我想要的时候(在范围内的函数内)切换出一个变量?
答案 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