为什么Javascript显示setTimeout函数同步和异步输出?
for(var i = 2;i >= 1;i--) {
setTimeout(function (i) {
console.log(i);
},1000);
console.log("hii");
}
此代码给我输出
HII
HII
不确定
不确定
凡如下格式使用的setTimeout后给出不同的输出
for(var i = 2;i >= 1;i--) {
setTimeout(print(i),5000);
console.log("hii");
}
function print(i) {
console.log(i);
}
此代码给我输出
HII
HII
我不明白,为什么在第二种情况下的代码同步执行。
您正在执行'印刷(一)'因为你是循环的回报值。它不返回一个函数(回调)。你需要运行'setTimout(函数名或者匿名函数)'而不是'setTimeout(somefunction())' – mplungjan