javascript积累七

来源:互联网 发布:mac系统cad字体设置 编辑:程序博客网 时间:2024/06/07 20:05

javascript高级程序设计里看的


function createFunctions(){      var result = new Array();      for(var i=0;i<10;i++){           result[i] = funciton(){             return i;        };    }        return result;}

最终result数组里的每个无素都为10,因为作用域链的关系,闭包只能取得包含函数中任何变量的最后一个值。

要想返回0、1、2.……

可以这样修改下:

function createFunctions(){         var result = new Array();         for(var i=0;i<10;i++){              result[i] = functions(num){                  return function(){                       return num;                  }            }(i);     }              return result;}

上面通过创建另一个匿名函数强制让闭包的行为符合预期

0 0
原创粉丝点击