• JS 之匿名函数


    匿名函数以及闭包

    匿名函数就是没有名字的函数。闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式是在一个函数的内部创建另一个函数。闭包会携带包含它的函数的作用域,因此会比其他函数占用更多的内存,因此尽量少用闭包。闭包只能取得包含函数中任何变量的最后一个值。闭包的作用域包括它自己的作用域,包含函数的作用域,全局作用域。

    每个函数在调用时,其活动对象都会自动取得两个特殊变量:this和arguments。内部函数在搜索这两个变量时,只会搜索到其活动对象(包含函数)为止,不会访问到外部对象。所以如果想访问外部对象的变量,可以把外部作用域中的this对象保存在一个闭包能访问的变量里,这样闭包就可以访问该对象了。例如:

    var name = "window";

    var object = {

      name : 'object',

      getFunc : function(){

        var that = this;    //将外部作用域中的this对象保存在变量that里

        return function(){

          return that.name;    //闭包可以访问变量that,也就是访问外部的this对象

        }

      }

    }

    闭包会引用包含函数的整个活动对象。使用完闭包后要解除引用,避免内存泄漏。

    块级作用域

    用匿名函数模仿块级作用域(私有作用域)的语法如下:

    (function(){

      //这里是块级作用域

    })();

    在匿名函数(块级作用域)中定义的变量,都会在执行结束时销毁。在匿名函数中,能够访问包含函数的所有变量。

    总结自:《javascript 高级程序设计》

  • 相关阅读:
    一个关于状态机的问题
    8位同步码修改变4位同步码
    BT1120时序,可以用于自测用
    欧几理德,扩展欧几里德和模线性方程组。
    "旋转的风车"----windows(GDI)绘图
    草滩小恪的学习链接(汇总版)
    酒鬼随机漫步(一个矢量类)
    小题精炼-----初试C语言
    大二(上)------我欠青春一份疯狂
    HDU 1027 Ignatius and the Princess II(康托逆展开)
  • 原文地址:https://www.cnblogs.com/zourong/p/4789214.html
Copyright © 2020-2023  润新知