js闭包
来源:互联网 发布:mac pro忘记登录密码 编辑:程序博客网 时间:2024/06/03 18:28
一.闭包定义
闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包的特点:
1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
简单来说闭包是对能够访问局部变量的函数的引用.
二、为什么需要闭包呢
局部变量无法共享和长久的保存,而全局变量可能造成变量污染,所以我们希望有一种机制既可以长久的保存变量又不会造成全局污染。
三、特点
- 占用更多内存
- 不容易被释放
四、何时使用
既想反复使用,又想避免全局污染
五、闭包的形成条件
(a)一定要执行外层函数返回的function才能形成闭包
(b)内层函数一定要调用外层函数的局部变量
(c)内层函数要最为外层函数的返回值
eg:
(1)
function getCounter() {
var n = 1;
var inner = function () { return n++; }
return inner;
}
var count=getCounter();
alert(count());
alert(count());
(2)
var test = (function getCounter() {
var n = 5;
return {
inner: function(data) {
if(data > n) {
n++;
return n;
} else {
n--;
return n;
}
}
}
})();
alert(test.inner(9));
alert(test.inner(9));
js中this的指代内容:https://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/index.html
- js闭包示例
- JS 闭包 计数器
- js闭包
- js 闭包
- js闭包
- js闭包
- js闭包
- js 闭包
- js 闭包
- js闭包
- js闭包
- (function (){})(); JS 闭包
- JS 闭包应用
- js闭包
- JS闭包
- JS 闭包随笔
- js闭包
- js 闭包
- Java抽象类与接口
- Java基础之集合框架--HashSet
- Linux平台 Oracle 12cR2 RAC安装Part1:准备工作
- 栈溢出笔记1.6 地址问题(1)
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家(multiset贪心)
- js闭包
- Xcode报错:"Geo::GetiOSAppDocumentsDir()",Geo::PathUtils::GetSandboxDataPath()
- mybatis学习之路----#{}, ${}两种传参数方式的区别--附源码解读
- Ubuntu 安装 eclipse
- 二维数组中的查找
- 正则
- 栈溢出笔记1.7 地址问题(2)
- 《Very Deep Convolutional Networks for Large-Scale Image Recogition》
- PAT 1103. Integer Factorization (30) DFS+树状数组。还是人家的代码好