js循环函数中的匿名函数和闭包问题(匿名函数要用循环中变量的问题)
一、总结
需要好好看下面代码
本质是因为匿名函数用到了循环中的变量,而普通方式访问的话,匿名函数的访问在循环之后,所以得到的i是循环执行完之后的i,所以不是正确结果
而直接执行匿名函数的方式当场就拿到了正确的i,闭包的方式也是因为将外部函数的变量保存在内存中从而可以得到正确的i
1、直接执行匿名函数的方式和闭包的方式都可以得到正常的结果
2、普通方式因为循环已经执行完成,所以得到的结果(用到的循环中的变量i)都是i执行完最后的结果
3、闭包的方式需要传参
闭包的方式
1.这里的匿名函数有一个参数 n,也就是最终将返回的结果数值;
2.在调用每个匿名函数时传入变量i
3.变量i的当前值会赋值给n,
4.匿名函数内部创建并返回了一个访问n的闭包
5.如此数组arr中的每个函数中都有了自己的n变量的一个副本(闭包可以将局部变量贮存在内存中)
二、js循环函数中的匿名函数和闭包问题
代码
1 2 3 4 5课堂演示 6 7 8 95 96