知识点
eval
with
new Function
题目
在开发前端框架、模版引擎的时候,经常会需要我们在特定的上下文中,动态分析、执行特定的表达式。例如:在{ x: 1, y: 2, z: 3 }
的上下文中执行表达式x + y
那么就会得到3
,执行z - x
就会得到2
。
请你完成execute
函数,接受一个字符串和对象作为参数,它可以在特定的上下文中执行任意的表达式,例如:
execute(`'My name is ' + name`, { name: 'Jerry' }) // => My name is Jerry
execute('monkeys.length + 1', { monkeys: [1, 2, 3] }) // => 4
execute('user.name + user.age', { user: { name: 'Jerry', age: 12 } }) // => Jerry12
execute('run()', { run: () => 'Good Night' }) // => Good Night
实现
题目要做到的有两个:
- 将字符串变成可执行的表达式
- 改