假设我有这样的template literal:
const templateLiteral = `string text ${expression} string text`
我想动态地将模板文字计算成一个完整的字符串。
function toFoo(templateLiteral){
//returns "string text Foo string text"
return templateLiteral.evaluate('Foo');
}
function toBar(templateLiteral){
//returns "string text Bar string text"
return templateLiteral.evaluate('Bar');
}
function toBaz(templateLiteral){
//returns "string text Baz string text"
return templateLiteral.evaluate('Baz');
}
有没有一种方法可以用模板常量来做类似的事情,或者我只是在装傻?(template.evaluate()是一个虚构的函数,但我正在用JS寻找这种功能!)
3条答案
按热度按时间lzfw57am1#
最好的方法是很明显的,简单地颠倒问题给出的情况。* 你只需要将模板字面量 Package 在一个函数中 *,然后你将延迟求值,直到你传入所需的参数。就是这么简单。
现在如果你想变得更好,你可以创建这个:
你可以像这样使用上面的:
xienkqul2#
带标记的模板字符串可以在这种情况下提供帮助:
strings
包含该行的“正常”标记,values
是“可变”部分。请注意,您必须手动连接字符串。lp0sw83n3#
我只会调用eval,当使用模板字符串时,您无论如何都在评估代码