闭包与变量
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的闭包;
一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;