2019-7-19 seo達人
如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里
for(var i = 0; i < 5; i++) {
console.log(i)
}
這樣for循環可打印出 0 - 4的結果
for(var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i)
}, i * 1000)
}
但這樣只能間隔一秒打印出5個5
原因在于 setTimeout是異步,等for循環全部完成 i 后才會執行
解決方法可以將 for循環中的var 變成 let
let只作用于for循環內,這樣每次付給setTimeout的值都是當前值
或者在setTimeout外再包一層function
for(var i = 0; i < 5; i++) {
(function(i) {setTimeout(function() {
console.log(i)
}, i * 1000)})(i)
}
將 i 作為參數傳到setTimeout中運行 這樣就可以得到每隔1秒加1的log結果了
藍藍設計( m.paul-jarrel.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、網站建設 、平面設計服務。