考虑以下 JavaScript 代码:
var a = [];
var f = function() {
for (var i = 0; i < 3; i++) {
a.push(function(){alert(i)});
}
for (var j = 0; j < 3; j++) {
a[j]();
}
};
警报打印了三次“3”。我想要不同的行为 - 在循环的每次迭代中生成一个打印 i 的当前值的函数。 IE。 3 个打印不同索引的函数。
有任何想法吗?
创建一个接受的匿名函数i
作为参数并返回某个函数:
for (var i = 0; i < 3; i++) {
a.push((function(i) {
return function() {
alert(i);
}
})(i));
}
for (var j = 0; j < 3; j++) {
a[j]();
}
或者做类似的事情:创建一个接受的匿名函数i
作为参数将函数添加到数组中:
for (var i = 0; i < 3; i++) {
(function(i) {
a.push(function() {
alert(i);
});
})(i);
}
for (var j = 0; j < 3; j++) {
a[j]();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)