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语句定义函数占用内存的弊端,因此该函数运行完毕就释放内存空间

  • 相关阅读:
    python常用运维脚本实例
    数据库优化方案整理
    Python第一章概述与环境安装
    九阴真经
    常用的kubectl命令
    第7篇管理存储资源
    第8篇NFS PersistentVolume
    第10篇用 ConfigMap 管理配置
    第11篇Kubernetes部署微服务电商平台
    第12篇Kubernetes 监控
  • 原文地址:https://www.cnblogs.com/amy2011/p/3131919.html
Copyright © 2011-2022 走看看