setTimeout、setInterval被遺忘的第三個參數

一、最近在看promise,驚奇的發現:原來 setTimeout不只有兩個參數,我還能說什么呢?趕緊探探究竟。

function multiply(input) {
    return new Promise(function (resolve, reject) {
        log('calculating ' + input + ' x ' + input + '...');
        setTimeout(resolve, 500, input * input);
    });
} 

二、定義

  • 扒了一下MDN,果然有定義:

    • Additional parameters which are passed through to the function specified by func once the timer expires.
      • 注:定時器啟動時候,第三個以后的參數是作為第一個func()的參數傳進去。

三、demo1

  • 增加兩個參數

     function sum(x, y) {
         console.log(x+y)
     }
     setTimeout(sum, 1000, 1, 3);    //4
    
  • 增加三個參數 


    • (打印出的11是setTimeout的timeId)

    • 可以看出:

      • [第三個參數及以后的參數都可以作為sum函數的參數;]

四、再看demo2

  var doc=document.getElementById('div');
  setTimeout(function(){
      doc.style.color='red';
  },10000,setTimeout(function(){
      doc.style.color='black';
  },5000));
  • 上面的結果是,div元素內的字體樣式5秒后變黑,10秒后再變紅。是不是很驚奇,因為第三個參數也是一個定時器,5后就會開啟。和JQuery里面的animate()不同,animate里面回調是執行了前面之后再執行后面的。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容