setTimeout第三个参数

704 阅读1分钟

setTimeout第三个参数

在日常工作中,我们使用setTimeout方法常常用于在指定的毫秒数后调用函数或计算表达式。

常用语法格式如下:

var timerId = setTimeout(function, 等待的毫秒数)

实际上还有第三个参数,鲜为人知。

var timeoutID = scope.setTimeout(function[ , delay, arg1, arg2, ...]);
  • arg1, ..., argN 可选

  • 附加参数,一旦定时器到期,它们会作为参数传递给function

作为参数

  1. 举例说明:
for (var i =0; i < 5; i++) {
    setTimeout(function(){
        console.log(i)
    }, 1000)
}

大家一看就知道结果是多少了吧。

  1. 使用第三个参数
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
})

那么第三个参数有什么意义?

  1. 增加回调函数🉑️可复用性,比如
function setName(name){}
setTimeout(setName,1000,'zs')
setTimeout(setName,print,1000,'ls')
  1. 参数值在函数调用之后再确定 函数经过一堆计算以后拿到当前的结构传递给函数使用。

MDN