Javascript 如何在没有let的情况下进行异步调用?

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()

我昨天发现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()*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做所有值感谢您的快速回复。感谢您的快速回复。