Javascript 如何在没有let的情况下进行异步调用?
我昨天发现iphone不允许使用let。这让我想起了如何处理ajax和超时等异步调用。下面是显示差异的示例代码。如何使var-half函数与let-half函数相同,而不使用某些设备不喜欢的关键字Javascript 如何在没有let的情况下进行异步调用?,javascript,let,Javascript,Let,我昨天发现iphone不允许使用let。这让我想起了如何处理ajax和超时等异步调用。下面是显示差异的示例代码。如何使var-half函数与let-half函数相同,而不使用某些设备不喜欢的关键字 $("body").append("VAR:<br>"); for (var i=0;i<10;i++) { setTimeout(function(){ $("body").append(i +"<br>"); },Math.random()
$("body").append("VAR:<br>");
for (var i=0;i<10;i++) {
setTimeout(function(){
$("body").append(i +"<br>");
},Math.random()*1000);
}
//make lets come after var
setTimeout(function(){
$("body").append("LET:<br>");
for (let i=0;i<10;i++) {
setTimeout(function(){
$("body").append(i +"<br>");
},Math.random()*1000);
}
},2000);
$(“body”).append(“VAR:
”);
对于(var i=0;i如果没有一个变量,您的代码将只有一个i实例,并且将始终显示10
。要创建局部变量,您需要一个函数。每个函数都有自己的局部变量。在代码中,我调用IIFE并将i
作为参数传递。每个函数都有自己的当前i
副本。
简而言之,如果您想要一个用var
关键字声明的局部变量,您需要一个函数
$("body").append("VAR:<br>");
for (var i=0;i<10;i++) {
(function(e){
setTimeout(function(){
$("body").append(e +"<br>");
},Math.random()*1000);
})(i);
}
$(“body”).append(“VAR:
”);
对于(var i=0;i如果没有一个变量,您的代码将只有一个i实例,并且将始终显示10
。要创建局部变量,您需要一个函数。每个函数都有自己的局部变量。在代码中,我调用IIFE并将i
作为参数传递。每个函数都有自己的当前i
副本。
简而言之,如果您想要一个用var
关键字声明的局部变量,您需要一个函数
$("body").append("VAR:<br>");
for (var i=0;i<10;i++) {
(function(e){
setTimeout(function(){
$("body").append(e +"<br>");
},Math.random()*1000);
})(i);
}
$(“body”).append(“VAR:
”);
对于(var i=0;i用var替换let!!如果这只是你的问题!!@Nalin运行我的jsfiddle,你会看到let和var做不同的事情。var只输出最后一个值。其中as let做所有值用var替换let!!如果这只是你的问题!!@Nalin运行我的jsfiddle,你会看到let和var做不同的事情。var只输出最后一个值。其中as-let做所有值感谢您的快速回复。感谢您的快速回复。