JavaScript定時器的幾種方法

  JavaScript定時器無非就是使用setTimeout和setInterval方法,我們以間隔1秒依次輸出1,2,3,4,5爲例總結幾種不同的寫法:



一、使用閉包

   一種常用的方法就是在for循環中使用立即執行表達式(IIFE)來創建一個閉包作用域。代碼如下:
 for (var i = 1; i <= 5; i++) {
       (function (i) {
          setTimeout(function () {
               console.log(i);
           }, i * 1000)
        }(i))
 }


二、借用let實現

   在ES6中,定義了關鍵字let,let可以將變量綁定到所在的任意作用域中,即let爲其聲明的變量隱式劫持了所在的塊作用域;let發揮優勢的一個典型的例子就是在for循環中,在for循環頭部let聲明的的變量,for的每一次循環都會重新聲明,並賦予上一輪循環結束的值。所以上邊的例子也可以這麼寫:
for (let i = 1; i <= 5; i++) {
      setTimeout(function () {
        console.log(i);
      }, i * 1000)
}


三、使setInterval實現

   由於setInterval函數自身的一些性能問題,實際當中很少用,但是本問題這樣的簡單例子,用該函數也是一種實現方法,代碼如下:

var i = 1;
var Id = setInterval(function () {
         if (i == 6) {
            clearInterval(Id);
         } else {
            console.log(i);
            i++;
         }
 }, 1000)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章