new Function和eval区别
eval和new Function都可以动态解析和执行字符串。但是它们对解析内容的运行环境判定不同。
eval中的代码执行时的作用域为当前作用域。它可以访问到函数中的局部变量。
new Function中的代码执行时的作用域为全局作用域,不论它的在哪个地方调用的。所以它访问的是全局变量a。它根本无法访问b函数内的局部变量。
下面这个例子可以说明了:
var a = 'global scope' function b(){ var a = 'local scope' eval('console.log(a)') //local scope ;(new Function('','console.log(a)'))() //global scope } b();
转自:https://www.cnblogs.com/zhangfengyang/p/5526024.html