假设我有当前代码:
for(var n = 0; n != 5;n++){
alert(i);
}
它会提醒 0,1,2,3,4
虽然现在假设我需要执行一个异步函数,它有一个可以作为参数传递的返回函数。
for(var n = 0; n != 5;n++){
doAsync(function(){alert(n);});
}
function doAsync(func){
setTimeout(func, 1000);
}
这将提醒“5”,5 次。有没有办法让 n 变量与循环中的变量保持不变?我的意思是我希望它执行 0,1,2,3,4。
谢谢,我感谢所有帮助。
最佳答案
这是一个典型的闭包问题。
您可以按以下方式更改您的代码
for (var n = 0; n != 5; n++) {
alert(n);
}
for (var n = 0; n != 5; n++) {
doAsync(function(n) {
alert(n);
}.bind(null,n));
}
function doAsync(func) {
setTimeout(func, 1000);
}
希望对你有帮助
关于javascript - for循环,保持变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317410/