一个小函数引起的思考
来源:互联网 发布:登录注册js特效 编辑:程序博客网 时间:2024/05/29 12:04
var a = [];for(var i = 0;i<10;i++){a[i] = function(){console.log(i)}a[0]()//0,1,2,3,4,5,6,7,8,9}a[0]()//10但是当在外面执行的时候,其实函数执行的时候i已经变成了10,当函数console.log(i)的时候i是10;那么你也许会问明明循环中已经定义好了a[6]= function(){console.log(6)}嘛,其实不是这样的,当在函数执行之前是不会读取函数体中的变量的,也就是说,循环了那么多次,定义了那么多的函数,函数体中的变量一直是i,只有在调用的时候才会寻找i的值
当在里面执行的时候,i是随着循环走的,每循环一次i就变化一次,所以在里面执行的时候函数中的i就是当前循环的i的值,这也就可以解释为什么在函数体内,a[0]()可以有那么多的值,因为还是上面的道理,当一次循环执行到a[0]()的时候,这个时候就开始为函数寻找函数里面的值到底是谁,结果自然而然就是当前循环的i的值嘛,当再一次接着循环的时候还是一样的道理.....
阅读全文
0 0
- 一个小函数引起的思考
- VC++一个函数引起的思考
- 一个问题引起的思考
- 一个粗心引起的思考
- 一个困惑引起的思考
- 一个方法引起的思考
- 一个BUG引起的思考
- strcpy函数引起的思考
- 一个容器Crash引起的思考
- 一个串口程序引起的思考
- 一个数码管电路引起的思考
- 一个小失误引起的大问题
- 一个小玩意引起的反思
- IT系统故障引起的一个事故的思考
- 由一个bug引起的关于list的思考
- 吃饭引起的思考
- Disruptor引起的思考
- ClassNotFoundException引起的思考
- 关于Guideline 4.3
- js控制上传文件的大小
- 入离职管理系统——类的抽取和注册登录功能
- 深度学习笔记——理论与推导之Neural Network的记忆力(四)
- Java提高篇——通过分析 JDK 源代码研究 Hash 存储机制
- 一个小函数引起的思考
- HttpClient代理IP及设置连接读取超时
- POJ 2253 Frogger 最小生成树
- python 案例008(九九乘法表)
- iOS AFN 3.0版本前后区别 02
- 线程死锁
- 论坛上看到的一个java输出顺序问题。
- 软件开发过程中所使用的生命周期模型比较
- 二维图形与三维图形自定义几何