setTimeout第三个参数
在日常工作中,我们使用setTimeout方法常常用于在指定的毫秒数后调用函数或计算表达式。
常用语法格式如下:
var timerId = setTimeout(function, 等待的毫秒数)
实际上还有第三个参数,鲜为人知。
var timeoutID = scope.setTimeout(function[ , delay, arg1, arg2, ...]);
-
arg1, ..., argN
可选 -
附加参数,一旦定时器到期,它们会作为参数传递给
function
作为参数
- 举例说明:
for (var i =0; i < 5; i++) {
setTimeout(function(){
console.log(i)
}, 1000)
}
大家一看就知道结果是多少了吧。
- 使用第三个参数
for (var i =0; i < 5; i++) {
setTimeout(function(j){
console.log(j)
}, 1000, i)
}
结果达到预期了。
作为函数
setTimeout(function(a){
console.log('第二次num:',a())
}, 4000, function(){
return 100
})
那么第三个参数有什么意义?
- 增加回调函数🉑️可复用性,比如
function setName(name){}
setTimeout(setName,1000,'zs')
setTimeout(setName,print,1000,'ls')
- 参数值在函数调用之后再确定 函数经过一堆计算以后拿到当前的结构传递给函数使用。