Javascript 循环JS变量不';t在函数中显示正确的值
我需要完成以下任务。但这总是只提醒“5”,而不是1、2、3、4和5。我怎样才能解决这个问题?请帮忙Javascript 循环JS变量不';t在函数中显示正确的值,javascript,jquery,jquery-mobile,cordova,Javascript,Jquery,Jquery Mobile,Cordova,我需要完成以下任务。但这总是只提醒“5”,而不是1、2、3、4和5。我怎样才能解决这个问题?请帮忙 for(var x=1; x<=5; x++){ something.load(function(result){ alert(x); }); } for(var x=1;x这是由于关闭造成的。当回调运行时,它将在当前状态下警告变量(因此在循环之后) 要解决这个问题,您可以创建一个新的闭包来保持变量状态 for(var
for(var x=1; x<=5; x++){
something.load(function(result){
alert(x);
});
}
for(var x=1;x这是由于关闭造成的。当回调运行时,它将在当前状态下警告变量(因此在循环之后)
要解决这个问题,您可以创建一个新的闭包来保持变量状态
for(var x=1; x<=5; x++){
(function(x) {
something.load(function(result){
alert(x);
});
}(x));
}
用于席VX=1;XI注意到许多建议的重复倾向于从不同的方向或不同的已知知识水平问问题;即那些问题已经知道问题与闭包有关。这会从1到5的顺序告警吗?不,这取决于何时触发回调函数。首先,它将在1之前调用2。此时,流不是由循环控制的,而是由异步操作控制的。如果您需要按顺序触发这些回调,请签出异步流库,如async.js或Promise规范(jQuery内置了Promise实现,您也可以使用)。