• 使用function和Function定义函数的区别 Amy


    我们先来看下面的两个例子

    var n=1;
    function f(){
        var n=2;
        var e=function(){
            return n;
        };
        return e;
    }
    alert(f()());//2
    var n=1;
    function f(){
        var n=2;
        var e=new Function("return n;");
        return e;
    }
    alert(f()());//1

     原因如下:JS解释器在解析代码时,并不是一行行地分析执行函数,而是一段一段地分析执行函数,在同一段代码中,使用function语句和函数直接量定义的函数结构总会被提取出来优先执行,只有当函数被解析和执行完毕后,才会按照顺序执行其他代码行,但是对于使用Function构造函数定义的函数并非提前执行,而是在运行时被动态地执行的,因此Function构造函数定义的函数具有顶级作用域

    执行效率方面的差异:JS解释器首先把function语句定义的函数提取出来进行编译,这样每次执行该函数时,就不再从头开始重新编译该函数对象,而Function构造函数定义的函数每次执行时都需要动态编译一次,因此效率较function非常低。

    Function函数不需要额外的变量,直接在表达式中参与运算,从而节省了资源,避免了使用function语句定义函数占用内存的弊端,因此该函数运行完毕就释放内存空间

  • 相关阅读:
    org.dom4j.Document相关操作api
    生成excel
    Maven
    Excel操作
    常用正则
    csv
    导出txt
    Map中的key值按字典排序,客户端发送http请求
    HmacSHA256签名加Base64编码加URL编码
    5.1SpringAOP-基础(装饰者,静态代理,JDKD动态代理,CGLIB动态代理)
  • 原文地址:https://www.cnblogs.com/amy2011/p/3131919.html
Copyright © 2020-2023  润新知