javascript闭包使用
2015-05-01 11:34
197 查看
之前看到一段代码,很是不能理解,然后就查找资料并且找网络上得大牛请教,最后弄懂了这段代码,然后就拿出来总结一下。
结果是这个样子的:
那怎么实现当遍历整个函数的时候打印出我们所希望的0,1,2这样的结果呢?
打印结果:
1.挖坑
先来看一段代码:var arrTest = []; for (var i = 0; i < 3; i++) { //注意函数没有传参数进入函数体 arrTest.push(function () { console.log('>>>' + i); }) } //arrTest=[function(){console.log('>>>'+i)}, function(){console.log('>>>'+i)}, function(){console.log('>>>'+i)}] console.log(arrTest[0].toString()); //function(){console.log('>>>',+i)} console.log(i); console.log('-------------'); //长度可以使用l 简单的单词来代替,减小代码长度 for (var i = 0, arrLength = arrTest.length; i < arrLength; i++) { console.log(i); arrTest[i](); } //验证的i的值 console.log('i的值是' + i); //i=3 console.log('end for'); for (var j = 0, arrLength = arrTest.length; j < arrLength; j++) { console.log(j); arrTest[j](); } arrTest = [function () { console.log('>>>' + i) }, function () { console.log('>>>' + i) }, function () { console.log('>>>' + i) }]
结果是这个样子的:
那怎么实现当遍历整个函数的时候打印出我们所希望的0,1,2这样的结果呢?
/* 对函数进行改造,当执行循环的时候,打印0,1,2 */ var arrTest1 = []; for (var i = 0; i < 3; i++) { //构造一个立即执行的函数将函数的返回结果添加入数组中 (function(n) { arrTest1.push(function() { console.log('>>>' + n); }); })(i); } console.log(arrTest1); for (var i = 0, l = arrTest1.length; i < l; i++) { arrTest1[i](); }
打印结果:
相关文章推荐
- javascript闭包使用 分类: JavaScript 2015-05-01 11:34 652人阅读 评论(3) 收藏
- javascript闭包使用
- javascript闭包(Module模式)的用途和高级使用方式
- JavaScript闭包使用总结
- 使用JavaScript闭包,以工厂模式实现定时器对象
- 教你如何使用firebug调试功能了解javascript闭包和this
- 【笔记】JavaScript闭包的常见使用
- 教你如何使用firebug调试功能了解javascript闭包和this
- javascript闭包的使用
- javascript闭包的使用之按钮切换功能
- 数据库的使用 sqlite
- Python 爬虫基础urllib的使用(二十)
- 小tips:path的join和resolve的使用区别
- SVN工具02:服务端使用说明
- 调试使用代码
- vue2.0使用v-for循环制作多级嵌套菜单栏
- 实例讲解.NET中资源文件的创建与使用
- 使用VS.NET2003编写存储过程
- (原创)使用TimeStamp控制并发问题[示例]-简要描述
- 几个javascript使用的技巧