zoukankan      html  css  js  c++  java
  • 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 高级程序设计》

  • 相关阅读:
    springboot集成mockito与powermock
    不一样的go语言-玩转语法之二
    不一样的go语言-玩转语法之一
    不一样的go语言-athens源码概览
    不一样的go语言-athens私仓安装
    不一样的go语言-构建系统与构件系统
    不一样的go语言-error
    不一样的go语言-gopher
    jssip中文开发文档(完整版)
    echarts属性的设置(完整大全)
  • 原文地址:https://www.cnblogs.com/zourong/p/4789214.html
Copyright © 2011-2022 走看看