如何实现一个函数求得可执行字符串(例如${a}+${b}
) 在某一个对象(例如const info = {a: 1, b: 2}
) 下的值呢? 很容易想到的是使用eval
(暂时不考虑安全性),下面是一种实现方案:
execStringExpression(expr, info) { let exprF = expr.replace(/\$\{([^}]+)\}/g, '${this[\'$1\'] || \'\'}') const fn = new Function(`return \`${exprF}\``).bind(info || {}) try { return eval(fn()) } catch(e) { console.log(e); } return '' }复制代码