0

可能重复:
循环内的 Javascript 闭包 - 简单的实际示例

我有一个image.onload这样的调用循环:

for (var i = 0; i < array.length; i++){
  var item = array[i]
    , image = new Image();

  image.onload = function(){
    // do something with 'item'
  }
  image.src = url;
}

因为我不知道该onload功能何时被触发,所以我相信它item会被覆盖。如何确保每个函数都由引用它在函数绑定到事件时所做的数据onload的变量触发?itemonload

4

2 回答 2

0

这应该有效。

image.onload = function(item){
    return function(){
      // do something with 'item'
    }(item);
};

您要做的是创建“范围”,以便在调用事件函数时,闭包带来您想要的值。

于 2012-08-29T02:34:40.583 回答
0

使用 IIFE 返回使用当前项的函数

  image.onload = (function(param){
    return function(){
    //do something with 'param'
    }
  })(item);
于 2012-08-29T02:34:47.410 回答