new Function和eval区别

Posted justdoyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于new Function和eval区别的主要内容,如果未能解决你的问题,请参考以下文章

new Function和eval区别

eval() 和 new Function() 是一回事吗?

javascript JS_new_Function()_ EVAL

Javascript动态执行JS(new Function与eval比较)

超级超级好玩的东西: eval 与new Function的用法

js中var a=new Object()和var a=有啥区别吗?