假设我有一个像"${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}
。
从字符串开始,例如"${a + b}"
,有没有办法让这个评估完成,好像它是模板文字一样?理想情况下没有eval
!
答案 0 :(得分:3)
是的,它们不是递归的。
如果您的起点是包含这些占位符的字符串,据我所知,没有模板编译器功能。当然有eval
; [插入关于使用eval
的所有常见警告 - 仅限于您信任的内容,而不是如果您可以避免它等等 - 此处]。
例如:
"use strict";
var x = {"add": "${a + b}"};
var a = 10, b = 20;
console.log(eval("`" + x.add + "`"));