不,他们 不 一样。
eval()
在当前执行范围内将字符串评估为Javascript表达式,并且可以访问局部变量。new Function()
将存储在字符串中的Javascript代码解析为一个函数对象,然后可以调用该对象。它无法访问局部变量,因为代码在单独的范围内运行。
考虑以下代码:
function test1() { var a = 11; eval('(a = 22)'); alert(a); // alerts 22}
如果
new Function('return (a = 22);')()使用,则局部变量
a将保留其值。但是,诸如Douglas
Crockford之类的一些Javascript程序员认为,除非绝对必要,否则都不应该使用它们,并且对不可信数据进行逃避/使用构造函数是不安全且不明智的。
Function
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)