美文网首页
eval和new Function

eval和new Function

作者: 月下吴刚_c8c7 | 来源:发表于2018-10-08 18:39 被阅读0次

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中的代码执行时的作用域为当前作用域。它可以访问到函数中的局部变量。
new Function中的代码执行时的作用域为全局作用域,不论它的在哪个地方调用的。所以它访问的是全局变量a。它根本无法访问b函数内的局部变量。

var fn = new function(arg1,arg2, ...,argN,function_body) ;

上面的形式中,每个 arg 都是一个参数,最后一个参数是函数主体(要执行的代码)。这些参数必须是字符串。
如下 函数 sayHi 有两种等同的定义方式:

function sayHi(sName, sMessage) {
  alert("Hello " + sName + sMessage);
}

等同于 :

 var sayHi  =  new Function("sName", "sMessage", "alert(\"Hello \" + sName + sMessage);")

注意 :
尽管可以使用 Function 构造函数创建函数,但最好不要使用它,因为用它定义函数比用传统方式要慢得多。不过,所有函数都应看作 Function 类的实例。
Function 对象的 length 属性,返回它实例函数的参数的形参个数 ;
Function 对象的方法 : Function 对象也有与所有对象共享的 valueOf() 方法和 toString() 方法。这两个方法返回的都是函数的源代码,在调试时尤其有用 .

相关文章

  • eval和new Function

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

  • eval() 和 new function()

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

  • eval和new Function的区别

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

  • 关于eval与new Function

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

  • 【译】以 eval() 和 new Function() 执行

    原文地址:http://www.2ality.com/2014/01/eval.html原文作者:Dr. Axel...

  • new 一个 Function

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

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

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

  • new 了一个 Function

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

  • function: eval

    用法 eval( expression )[ a1,a2,a3... ] = eval( ' myfun( b1,...

  • JavaScript函数_06 eval | with

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

网友评论

      本文标题:eval和new Function

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