for(var i = 2;i >= 1;i--) {
setTimeout(function (i) {
console.log(i);
},1000);
console.log("hii");
}
此代码将输出显示为
在以以下格式使用setTimeout之后给出不同的输出
for(var i = 2;i >= 1;i--) {
setTimeout(print(i),5000);
console.log("hii");
}
function print(i) {
console.log(i);
}
此代码将输出显示为
我不明白为什么在第二种情况下代码是同步执行的。
最佳答案
因为在那里您已经调用了print
函数,所以不会将其作为回调传递。在这种情况下,它将完成print
函数的执行,然后将返回值作为第一个参数传递给setTimeout。
这就是您要尝试的:-
for(var i = 2;i >= 1;i--) {
setTimeout(print(i),5000);
console.log("hii");
}
function print(i) {
return function(){console.log(i)}
}
关于javascript - 为什么Javascript使用setTimeout函数同步和异步显示输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40650948/