var num = 0;var max = 10;(function incrementNumber(){ num++; if (num <= max) { console.log(num); setTimeout(incrementNumber,500) //setTimeout(incrementNumber(),500) } else{ console.log('done'); }})();謝謝各位,問題已解決: incrementNumber()直接調用函數,返回undefined,導致setTimeout失效,但是incrementNumber()函數仍然運行,所以最后直接輸出,但是沒有任何時間間隔當incrementNumber沒有帶括號的時候,運行正確,每隔500ms從1輸出到10.為什么加上了括號之后incrementNumber(),運行后直接就把1到10輸出來了,沒有任何的間隔時間?我知道第一個參數應該是字符串或者函數(名),但為什么這里加上括號之后沒有出錯呢?(雖然運行結果并不符合預期)我的理解是最后一次性返回所有數字沒有問題,但之前應該會有10*500ms總的等待時間?
關于setTimeout()第一個參數很奇怪的地方?
嗶嗶one
2019-02-26 12:15:00