zoukankan      html  css  js  c++  java
  • 闭包与变量

     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的闭包;
  • 相关阅读:
    判断jquery.表单验证插件是否通过验证的解决办法
    查看网站收录情况
    js面向对象基础拾遗
    查看显卡信息的DOS命令
    关于OR Mapping
    推荐两篇文章
    读书
    测试开发驱动实践
    粗略看Hibernate的代码
    开发源码的数据库群集中间件 CJDBC
  • 原文地址:https://www.cnblogs.com/yangguoe/p/9054563.html
Copyright © 2011-2022 走看看