zoukankan      html  css  js  c++  java
  • 使用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语句定义函数占用内存的弊端,因此该函数运行完毕就释放内存空间

  • 相关阅读:
    缅怀
    74LS164的使用
    跑步
    Datasheet,你会读么?[转]
    清华附小给的书单
    iOS-小知识
    网络-GET&POST
    网络-基础
    网络-HTTP其他常见方法
    数据解析
  • 原文地址:https://www.cnblogs.com/amy2011/p/3131919.html
Copyright © 2011-2022 走看看