我想将当前索引传递给通过FileApi读取图像并显示它们预览的函数:
for(var i = 0, f; f = files[i]; i++) {
if (!f.type.match("image.*")) {
continue;
}
var reader = new FileReader();
reader.onload = (function(theFile) {
return function(e) {
var dv = document.createElement("div");
//.............
};
})(f);
reader.readAsDataURL(f);
}
我试过这个:
//.......
var reader = new FileReader();
reader.onload = (function(theFile, i2) {
//i2 is defined here
return function(e) {
var dv = document.createElement("div");
//i2 isn't defined here
};
})(f, i);
但是你可以看到,i2没有定义。如何解决?
答案 0 :(得分:-1)
如果你稍微整理了包装函数,那么一切都可以正确确定范围。在这里,我基本上将整个循环体包裹在自调用函数中。然后,onload处理程序只是一个普通的旧函数赋值。在您的生产代码中,您可以删除虚拟负载。
8. return a + b; -- Error!
|
>>> invalid operand types for operator "+"
>>> left operand has type "Apples" defined at line 2
>>> right operand has type "Oranges" defined at line 3