简易理解JavaScript闭包(Closure)
2012-09-27 17:12
441 查看
前言
关于JavaScript闭包(Closure)网络中已经有很多相当详细的文章介绍了(详见参考学习资料),这里以一种简明的方式解释一下JavaScript闭包及其几个用途,希望对初学者快速理解JavaScript闭包有所帮助。
正文
1. 变量的作用域
f0可访问变量a0,不能访问变量a1,a2;
f1可访问变量a0,a1,不能访问变量a2;
f2可访问变量a0,a1,a2;
2. JavaScript闭包
JavaScript闭包简单理解定义:
在一个函数内定义的另外一个函数,上面代码中的函数f2就是JavaScript闭包。
3. JavaScript闭包用途
使上面代码中的f0可以访问变量a1,a2.
基于此的JavaScript闭包其它用途请参考本文的学习资料和网络。
4. 原因解释
两点:
(1)f2定义在f1内部(JavaScript闭包);
(2)“return f2()”,使得f2在f0中运行,f2运行依赖于f1,所以f1不会被JavaScript的垃圾回收机制所回收,这样f0即通过f2访问到了f2和f1中的变量。
5. 参考学习资料:
1. 学习Javascript闭包(Closure):http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
2. https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Closures?redirectlocale=en-US&redirectslug=Core_JavaScript_1.5_Guide%2FClosures
3. 深入理解Javascript闭包:http://blog.csdn.net/hitman9099/article/details/3854171
4. 理解Javascript的闭包:http://coolshell.cn/articles/6731.html
关于JavaScript闭包(Closure)网络中已经有很多相当详细的文章介绍了(详见参考学习资料),这里以一种简明的方式解释一下JavaScript闭包及其几个用途,希望对初学者快速理解JavaScript闭包有所帮助。
正文
1. 变量的作用域
var a0 = 0; function f0(){ //... } function f1(){ var a1 = 1; var f2 = function(){ var a2 = 2; alert(a0 * a1 * a2); } }一般情况下来讲(不使用JavaScript闭包方法):
f0可访问变量a0,不能访问变量a1,a2;
f1可访问变量a0,a1,不能访问变量a2;
f2可访问变量a0,a1,a2;
2. JavaScript闭包
JavaScript闭包简单理解定义:
在一个函数内定义的另外一个函数,上面代码中的函数f2就是JavaScript闭包。
3. JavaScript闭包用途
使上面代码中的f0可以访问变量a1,a2.
var a0 = 0; function f0(){ f1(); } function f1(){ var a1 = 1; var f2 = function(){ var a2 = 2; alert(a0 * a1 * a2); } return f2(); } f0();
基于此的JavaScript闭包其它用途请参考本文的学习资料和网络。
4. 原因解释
两点:
(1)f2定义在f1内部(JavaScript闭包);
(2)“return f2()”,使得f2在f0中运行,f2运行依赖于f1,所以f1不会被JavaScript的垃圾回收机制所回收,这样f0即通过f2访问到了f2和f1中的变量。
5. 参考学习资料:
1. 学习Javascript闭包(Closure):http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
2. https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Closures?redirectlocale=en-US&redirectslug=Core_JavaScript_1.5_Guide%2FClosures
3. 深入理解Javascript闭包:http://blog.csdn.net/hitman9099/article/details/3854171
4. 理解Javascript的闭包:http://coolshell.cn/articles/6731.html
相关文章推荐
- 深入理解Javascript闭包(closure)
- 深入理解Javascript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解Javascript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure) – Felix Woo
- 深入理解Javascript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解Javascript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 【转】深入理解JavaScript闭包(closure)
- 深入理解Javascript闭包(closure)
- Javascript闭包(Closure)理解
- 深入理解Javascript闭包(closure)
- [转载]深入理解JavaScript闭包(closure)