JavaScript中的闭包Closures
来源:互联网 发布:大众网络报2014 编辑:程序博客网 时间:2024/06/09 23:48
示例:
//Passed in FF2.0, IE7, Opera9.25, Safari3.0.4
function outer(){
var a="aaa";
var b="bbb";
return function(){ return a + " " + b; };
}
var inner=outer();
document.write(inner());outer返回的是一个内嵌函数,内嵌函数使用了outer的局部变量a和b。照理outer的局部变量在返回时就超出了作用域因此inner()调用无法使用才对。这就是闭包Closure,即函数调用返回了一个内嵌函数,而内嵌函数引用了外部函数的局部变量、参数等这些应当被关闭(Close)了的资源。
根据前面Scope Chain的理解可以解释,返回的内嵌函数已经持有了构造它时的Scope Chain,虽然outer返回导致这些对象超出了作用域、生存期范围,但JavaScript使用自动垃圾回收来释放对象内存: 按照规则定期检查,对象没有任何引用才被释放。因此上面的代码能够正确运行。
- JavaScript中的闭包Closures
- 浅析 JavaScript 中的闭包(Closures)
- 浅析 JavaScript 中的闭包(Closures)
- 浅析 JavaScript 中的闭包(Closures)
- 浅析 JavaScript 中的闭包(Closures)
- Javascript Closures[闭包]
- javascript Closures(闭包)
- [ javascript ] Closures ( 闭包 )!
- JS闭包(Javascript Closures译文)
- 深入理解JavaScript闭包(Closures)
- 轻松理解javascript中的闭包(Understand JavaScript Closures With Ease)
- Swift中的闭包(Closures)
- 闭包(Closures)
- Swift-Closures 闭包
- Swift:闭包(Closures)
- Swift闭包(Closures)
- Closures--闭包
- Swift 闭包Closures
- B2B电子商务助中小企业成功
- 一个有趣的学习方法
- UNIX查看端口状态onstat -an |grep 端口号
- struts2-教程学习7
- error LNK2001
- JavaScript中的闭包Closures
- 自动备份Mysql数据库的shell文件
- 哲理
- Javascript闭包技术[zz]
- winxp通过注册表添加删除系统服务
- UltraEdit使用技巧
- 关于Lua脚本调试
- Berkeley DB的介绍
- 公式