观文有感:
动态执行字符串有两种方式
new Function('alert("123")')()
eval('alert("123")')

区别:
1.new Function内代码的父级作用域是全局作用域,new Function修改变量不会影响外部变量

例:
var a = 1;
new Function('a=2');
console.log(a) //1

2.eval内代码的父级作用域是当前所在的函数作用域,更改变量会影响外部变量

var a = 1;
eval('a=2');
console.log(a) //2

juejin.cn
展开
1