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) //3
}
setTimeout(sum, 1000, 1, 3);

增加三個參數 

(打印出的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里面回調是執行了前面之后再執行后面的。

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM