可能重复:
Javascript closure inside loops - simple practical example
我有一个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
变量触发每个item
函数,引用它在函数绑定到onload
事件时所执行的数据?
答案 0 :(得分:0)
这应该有用。
image.onload = function(item){
return function(){
// do something with 'item'
}(item);
};
你想要做的是创建“范围”,以便在调用事件函数时,closure带来你想要的值。
答案 1 :(得分:0)
使用IIFE返回使用当前项目的函数
image.onload = (function(param){
return function(){
//do something with 'param'
}
})(item);