【发布时间】:2018-01-23 15:54:06
【问题描述】:
假设我有一个类似"${a + b}" 的字符串,比如从 JSON 读取,我想将其解释为 ES6 模板文字。我认为这样的事情可能会奏效:
var x = {"add": "${a + b}"};
var a = 10, b = 20;
alert(`${x.add}`);
但是这个警报是${a + b},所以它只做了一级替换。
试图通过再次解释变得聪明:
var a = 10, b = 20;
var x = {"add": "${a + b}"};
var i = `${x.add}`;
alert(`${i}`);
这仍然以${a + b} 发出警报。
试着变得更聪明:
var a = 10, b = 20;
var x = {"add": "${a} + ${b}"};
var i = `${x.add}`;
alert(`${i}`);
此警报为${a} + ${b}。
以字符串开头,例如@ 987654328@,有没有办法让这个评估完成,就好像它是一个模板文字?理想情况下没有eval!
【问题讨论】:
-
它们是模板文字,而不是模板字符串。确实,如果你不对它们使用标签函数,它们最终会创建字符串(但如果你对它们使用标签函数,它们可能不会)。
-
@T.J.Crowder - 稍微清理了一下。希望现在措辞更好。
标签: javascript templates ecmascript-6