setTimeout、setInterval被遗忘的第三个参数

1、最近在看promise,惊奇的发现:原来 setTimeout不仅有两个参数,我还能说什么呢?赶忙探探究竟。javascript

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

 

2、定义java

扒了一下MDN,果真有定义:promise

  ’Additional parameters which are passed through to the function specified by func once the timer expires.’函数

  定时器启动时候,第三个之后的参数是做为第一个func()的参数传进去。字体

3、demo1spa

增长两个参数3d

function sum(x, y) {
    console.log(x+y) //3
}
setTimeout(sum, 1000, 1, 3);

增长三个参数 code

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

能够看出:ip

[第三个参数及之后的参数均可以做为sum函数的参数;]

 

4、再看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里面回调是执行了前面以后再执行后面的。

相关文章
相关标签/搜索