爲什麼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