Yim*_*ong 5 javascript templates ecmascript-6
假设我有一个字符串"${a + b}",比如从 JSON 读取,我想将其解释为 ES6 模板文字。我认为这样的事情可能会奏效:
var x = {"add": "${a + b}"};
var a = 10, b = 20;
alert(`${x.add}`);
Run Code Online (Sandbox Code Playgroud)
但这会警告为${a + b},因此它只执行一级替换。
尝试通过再次解释来变得聪明:
var a = 10, b = 20;
var x = {"add": "${a + b}"};
var i = `${x.add}`;
alert(`${i}`);
Run Code Online (Sandbox Code Playgroud)
这仍然警告为${a + b}。
尝试变得更聪明:
var a = 10, b = 20;
var x = {"add": "${a} + ${b}"};
var i = `${x.add}`;
alert(`${i}`);
Run Code Online (Sandbox Code Playgroud)
这警告为${a} + ${b}。
以字符串开头,例如"${a + b}",有没有办法将其评估为完成,就好像它是模板文字一样?理想情况下没有eval!
是的,它们不是递归的。
如果您的起点是包含这些占位符的字符串,据我所知,没有模板编译器功能。eval当然有;[在此处插入有关使用的所有常见警告eval - 仅适用于您信任的内容,而不是您可以避免使用的内容,等等]。
例如:
"use strict";
var x = {"add": "${a + b}"};
var a = 10, b = 20;
console.log(eval("`" + x.add + "`"));Run Code Online (Sandbox Code Playgroud)