js知识总结—基础进阶篇

字号+
字号-

1.eval(jsstr)和new Function(jsstr)

evalnew Function都可以动态解析和执行字符串。会将字符串转义为js代码。区别如下:

1.对解析内容的运行环境判定不同:eval中的代码执行时的作用域为当前作用域,它可以访问到函数中的局部变量,也可以访问全局变量。new Function中的代码执行时的作用域为全局作用域,不论它的在哪个地方调用的,所以它访问的都是全局变量,无法访问局部作用域的变量。

var a = 'global scope' 
function b(){ 
    var a = 'local scope' 
    eval('console.log(a)') //local scope 
    (new Function('','console.log(a)'))() //global scope
}
b()

2.eval() 安全性较低,最好不要使用。它使用与调用者相同的权限执行代码。 eval() 运行的字符串代码若被恶意方修改,将会影响计算机的安全。

3.evalnew Function更慢,因为它必须调用 JS 解释器,很吃性能。

文章出自:https://www.zuifengyun.com/2020-03-2849.html 版权所有,除注明外皆为原创。文章仅为作者个人观点,不代表醉风云立场。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注