函数闭包
- 函数就是闭包,当一个函数被创建时,它的内部的语句、变量、函数等,共同形成了闭包。
这里简单分析下闭包函数执行调用过程
function outer(){ var a = 12; //形成闭包环境中的变量不是一成不变的,可以被更改 function inner(){ console.log(a ++); } return inner; } var inn = outer(); inn(); inn();
闭包的用途:
可以在函数外部读取函数内部成员
让函数内成员始终存活在内存中
闭包存在的问题
//闭包的问题 var arr = []; for(var i = 0;i <= 10;i ++){ arr[i] = function (){ console.log(i); } } //应该是输出对应下标 arr[0]();//11 arr[1]();//11 arr[2]();//11</pre>
这个代码只是想实现根据arr下标,console.log出相应的值。但是当调用时,for循环中的i已经执行完了,i = 11。i的作用域太大了,执行时,i的结果就已经执行完了。
解决方法就是形成一个闭包,将i的作用域从全局缩小变成局部作用域,arr[i]()
每执行一次,i的值就执行一次,使i的值依旧可以使用。
//解决 var arr = []; for (var i = 0; i <= 10; i++) { //自调用函数 (function (i){ arr[i] = function () { console.log(i); } })(i); } //应该是输出对应下标 arr[0]();//0 arr[1]();//1 arr[2]();//2
原文转载:http://www.shaoqun.com/a/630677.html
一淘比价网:https://www.ikjzd.com/w/1698
菜鸟网络:https://www.ikjzd.com/w/1547
函数闭包函数就是闭包,当一个函数被创建时,它的内部的语句、变量、函数等,共同形成了闭包。这里简单分析下闭包函数执行调用过程functionouter(){vara=12;//形成闭包环境中的变量不是一成不变的,可以被更改functioninner(){console.log(a++);}returninner;}varinn=outer();inn();inn();闭包的用途:可以在函数外部读取
pat:https://www.ikjzd.com/w/1079
aeo:https://www.ikjzd.com/w/2356
etsy:https://www.ikjzd.com/w/169.html
出口美国必看!美国海关正式实施ACAS计划,违者处罚!:https://www.ikjzd.com/home/97807
Wish政策再调整:确认妥投时间最高延长20天:https://www.ikjzd.com/home/118608
直通车就是送钱?你真的会分析数据吗?:https://www.ikjzd.com/home/100945
没有评论:
发表评论