美文网首页
eval作用,以及和new Function()的区别

eval作用,以及和new Function()的区别

作者: sdcV | 来源:发表于2017-07-20 21:56 被阅读130次
一、eval的特点
  1. eval不容易调试。用chromeDev等调试工具无法打断点调试
  2. 性能问题,eval不可预测,所以浏览器将会使用slow path模式 ,所以会慢。
  3. 安全性
  4. 效率问题是程序逻辑问题。对于一些有执行字符串代码需求的程序中,不用eval而用其他方式模拟反而会带来更大的开销
二、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()

    • eval中的代码执行时的作用域为当前作用域。当eval中的代码执行时,它依然是优先从b函数内部查找a变量,没有再向外查找。
    • new Function()中的代码执行时的作用域为全局作用域,不论它的在哪个地方调用的。所以它访问的是全局变量a。它根本无法访问b函数内的局部变量。

相关文章

  • eval作用,以及和new Function()的区别

    一、eval的特点 eval不容易调试。用chromeDev等调试工具无法打断点调试 性能问题,eval不可预测,...

  • eval和new Function的区别

    eval和new Function都可以动态解析和执行字符串。但是它们对解析内容的运行环境判定不同。 eval中的...

  • eval和new Function

    eval和new Function都可以动态解析和执行字符串。但是它们对解析内容的运行环境判定不同。 eval中的...

  • eval() 和 new function()

    eval()和new function()的功能基本相似:将字符串解析成js可以看懂的语言,即将字符串当做代码来执...

  • new 一个 Function

    new Function 和 eval 的区别 一、从模板引擎 模板引擎可以怎样理解呢? 在一段 Html 文档里...

  • new 了一个 Function

    new Function 和 eval 的区别可以搜索到蛮多解释,但总觉得还不够具体,寻思着补补刀 一、从简易模板...

  • 关于eval与new Function

    由一道题目引发的思考:eval能访问上下文,new Function只能构建自己的一个私有作用域。 new Fun...

  • JavaScript函数_06 eval | with

    eval 函数 作用:把字符串转换为js的代码new Function("字符串"); //把字符串转换为js...

  • new Function

    1、eval中的代码执行时的作用域为当前作用域。它可以访问到函数中的局部变量。*2、new Function中的代...

  • Pytorch的一些用法

    Pytorch:model.train()和model.eval()用法和区别,以及model.eval()和to...

网友评论

      本文标题:eval作用,以及和new Function()的区别

      本文链接:https://www.haomeiwen.com/subject/jcnjkxtx.html