JavaScript闭包
来源:互联网 发布:上师大网络教育 编辑:程序博客网 时间:2024/06/05 21:07
执行环境和作用域链
每个执行环境都有一个与之关联的变量对象(执行环境中定义的所有变量和函数都保存在这个对象中),某个执行环境所有代码执行完毕后会销毁环境。全局执行环境是最外围的一个执行环境(window对象,直到应用程序退出时才会销毁),每个函数都有自己的执行环境和作用域链(保证执行环境有权访问所有层级变量和函数,顺序为当前函数的arguments对象--->包含的外部环境变量对象--->....--->全局环境变量对象)
闭包
闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的常见方式就是在一个函数内部创建另一个函数。闭包会将外部函数的变量对象添加到作用域链中并且外部函数的变量对象在闭包引用未销毁前驻留在内存中(外部函数的this和arguments对象除外),通过闭包可以创建访问私有变量、函数的公有方法(特权方法)
function a(){
var i=0;
return function(){
//闭包,i常驻内存
alert(++i);
}
}
//匿名函数引用
var r=a();
//调用闭包
r();//i=1
r();//i=2
r=null;//解决闭包占用内存问题方式一--->注销匿名函数引用
function b(){
var j=0;
//解决闭包占用内存问题方式二--->私有作用域
return (function(){
//闭包
alert(++j);
})();
}
//不需要匿名函数引用
b();
b();
0 0
- 【JavaScript】Javascript闭包
- javascript的闭包javascript
- Javascript闭包演示javascript
- [ javascript ] javascript闭包测试!
- 【javascript】javascript中的闭包
- 【javascript】学习Javascript闭包
- 理解 JavaScript 闭包
- javascript 闭包
- javascript闭包
- Javascript闭包
- JavaScript中的"闭包"
- JavaScript 闭包
- javascript中的闭包
- 理解 JavaScript 闭包
- Javascript Closures[闭包]
- javascript闭包
- Javascript 闭包详解
- Javascript闭包技术
- Logstash的logstash-input-jdbc插件mysql数据同步ElasticSearch及词库
- java控制double输出的小数点位数
- Caffe 训练出现 loss = 1.#QNAN 的解决方法。
- Android Studio 好用的插件
- 乡韵
- JavaScript闭包
- flex布局基础
- easyui的下拉复选combobox
- linux(centos7)下搭建SVN服务器
- CS0127号错误是什么
- Activity与Service生命周期
- AWVS扫描小技巧
- Android 6.0
- java 判断远程服务器http是否存在