setTimeout函数的第三个参数
最近拜读阮一峰大神的ES6时,突然发现一个平常得不能再平常的函数setTimeout()函数,竟然还有第三个参数!
而在平时的使用中,我们一般只用到前面的两个参数,即:
setTimeout ( code , ms )
- code:延迟时间到期之后执行的代码块
- ms:延迟时间
然后自己带着疑惑去查阅MDN之后,才发现,原来setTimeout函数不止有第三个参数,后面甚至可以紧跟无数个参数!
其原文函数形式如下:
var timeoutID = scope.setTimeout(function[, delay, param1, param2, ...]);
var timeoutID = scope.setTimeout(function[, delay]);
var timeoutID = scope.setTimeout(code[, delay]);
Additional parameters which are passed through to the function specified by functionor code once the timer expires.
上面这句话的意思是:param1,param2...paramN作为前面的回调函数的附加参数.
怎么理解这句话呢?
我们可以通过简单的代码来实践一下,毕竟实践出真知嘛。
setTimeout((a,b,c) => {
console.log(a,b,c)
}, 2000, "my", "name", "is starsion");
my name is starsion
好了,到这里应该就知道后面参数的用法了。
不过还要注意一点就是:
这种传参方式在IE9及更低的版本下是不起作用的,需要使用polyfill。