eval()和new Function()是同一件事吗?

eval()和new Function()是同一件事吗?,第1张

eval()和new Function()是同一件事吗?

不,他们 一样。

  • 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



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5588015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存