1 // 闭包与变量 2 function createFunctions(){ 3 var result=new Array(); 4 for(var i=0;i<10;i++){ 5 result[i]=function(){ 6 return i; 7 }; 8 } 9 return result; 10 } 11 //这个函数用回返回一个函数数组;每个函数都返回时; 12 // 因为每个函数的作用域中都保存着createFunctions()函数的活动对象,他们引用的都是同一个变量i;当createFucntion返回后, 13 // 变量i对的值为10;此时每个函数都引用着保存变量i的同一个变量对象;所以再每个函数内部的i的值都是10; 14 //为了让符合预期:可以: 15 function createFunctions(){ 16 var result=new Array(); 17 for(var i=0;i<10;i++){ 18 result[i]=function(num){ 19 return function(){ 20 return num; 21 } 22 }(i); 23 } 24 return result; 25 } 26 //在这里我们将匿名函数的值复制给数组,这里匿名函数有提个参数num;也就是最终函数要返回的值;在调用每个匿名函数的时候, 27 // 我们传入了变量i;由于函数参数是按值传递的;所以会将变量i的当前值复制给参数num;儿在这个匿名函数内部,又创建并返回一个访问num的闭包;
闭包与变量
猜你喜欢
转载自www.cnblogs.com/yangguoe/p/9054563.html
今日推荐
周排行