博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS 之匿名函数
阅读量:5218 次
发布时间:2019-06-14

本文共 760 字,大约阅读时间需要 2 分钟。

匿名函数以及闭包

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

每个函数在调用时,其活动对象都会自动取得两个特殊变量: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 高级程序设计》

转载于:https://www.cnblogs.com/zourong/p/4789214.html

你可能感兴趣的文章
技术文章的阅读姿势
查看>>
三期_day05_Dao层的准备工作_II
查看>>
React 新 Context API 在前端状态管理的实践
查看>>
POJ 3419 Difference Is Beautiful(RMQ+二分 或者 模拟)
查看>>
Android HTTP实例 发送请求和接收响应
查看>>
重新创建Activity
查看>>
Steps for Oracle Performance Tuning
查看>>
浅谈css的预编译---less语言
查看>>
压力开关
查看>>
Linux C编程之十七 socket编程
查看>>
UVa 1616 - Caravan Robbers
查看>>
使用Python做科学计算初探
查看>>
[BZOJ4318]OSU!
查看>>
ContextLoaderListener - 运行原理
查看>>
HDU 5288 OO’s Sequence
查看>>
APP弱网测试 抓包软件就能用于模拟弱网(Fiddler、Charles)
查看>>
接口测试实例(Road)
查看>>
关于VR 应用设计的 8 个建议
查看>>
Linux inode 理解
查看>>
Python高级主题:Python ABC(抽象基类)
查看>>