JS——闭包中关于函数数组的问题
来源:互联网 发布:淘宝睡衣退款率 编辑:程序博客网 时间:2024/05/22 01:56
JavaScript中闭包是一大关键点,书上认为闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式就是在一个函数内部创建另一个函数。
由于在JavaScript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。
所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
我按照书上的例子,却久久不能实现。。。
错误的写法:
<!DOCTYPE html><html><body><script type="text/javascript">function createFunctions() {var result = new Array();for(var i=0;i<10;i++) {result[i] = function() {return i;};}return result;}var arr = createFunctions();alert(arr);</script></body></html>
所以这时候不能alert(arr);
修正的代码:
<!DOCTYPE html><html><body><script type="text/javascript">function createFunctions() {var result = new Array();for(var i=0;i<10;i++) {result[i] = function() {return i;};}return result;}var arr = createFunctions();for(i=0;i<10;i++) {alert(arr[i]());}</script></body></html>
附上另一段代码,比较清晰的证明了闭包和作用域的问题:
<!DOCTYPE html><html><body><script type="text/javascript">function f1(){ var n=999; nAdd=function(){n+=1} function f2(){ alert(n); } return f2; } var result=f1(); result(); // 999 nAdd(); result(); // 1000</script></body></html>
nAdd是一个全局变量,等于一个匿名函数,这个匿名函数即闭包。
0 0
- JS——闭包中关于函数数组的问题
- 关于js的函数重载的问题
- JS中关于函数调用的问题
- 关于js函数的参数传递问题
- 关于JS的函数载入问题
- 关于js函数重构的问题
- Js中关于数组常用函数的介绍
- 关于js中关联数组的使用问题
- js里面关于数字 字符串 数组 的问题
- 关于页面js输出数组数据时出现‘,’的问题
- node.js关于一个js文件引用另一个js文件里面的函数或者数组变量
- 关于函数返回的局部数组的问题
- 关于数组做函数参数的问题汇总
- 关于二维数组作为参数传递给函数的问题
- 关于 Numpy 数组作为函数参数的一个小问题
- 关于自定义控件数组初始化函数的位置问题
- 关于二维数组当做函数参数的问题
- 关于C语言函数返回数组的问题
- NSTimer知识点和倒计时的实现
- 14025将一幅图像叠加在另一幅图像上
- Android 从硬件到应用:一步一步向上爬 2 -- 运行 C 程序测试硬件驱动
- 文件读写
- LinearLayout onClick方法失效问题。。。
- JS——闭包中关于函数数组的问题
- 将matlab立体标定参数的mat格式写成xml格式
- jedis各种类型的各种操作
- 自定义权限学习(Perssion)
- linux配置静态ip 问题
- div中id与class的区别
- Android 从硬件到应用:一步一步向上爬 3 -- 硬件抽象层访问硬件驱动
- 为什么ubuntu中没有inittab文件
- 一些有用的实例