setTimeout和setInterval传参

setTimeoutsetInterval这两个方法我们平时会经常用到,有的时候我们需要在过多久后执行已经定义好的某个方法。

如下已经定义好某个方法:

function someFn(prop) {
    console.log(`使用prop参数:${prop}`)
}

设置隔五秒的时候执行:

setTimeout(someFn, 5000)

如果按照以上来调用,我们就没法获取到prop参数,以前我的做法是在匿名函数里面调用someFn:

setTimeout(function(){
    someFn('hello world!')
}, 5000)

但是这样做的话,平白多定义了一个匿名函数,并且代码看起来也不简洁,恰好今天在学习Promise的时候,发现setTimeoutsetInterval方法其实不止包含这两个参数,还有另外一个参数一直没被我用到过,先给文档链接

以下是文档上的语法解释:

var timeoutID = scope.setTimeout(function[, delay, param1, param2, ...]);
var timeoutID = scope.setTimeout(function[, delay]); 
var timeoutID = scope.setTimeout(code[, delay]);
  • function
    function 是你想要在delay毫秒之后执行的函数。

  • code
    这是一个替代语法,你可以使用字符串代替function ,在delay毫秒之后执行字符串 (使用该语法是不推荐的, 原因和使用 eval()一样,有安全风险)。

  • delay(可选)
    延迟的毫秒数 (一秒等于1000毫秒),函数的调用会在该延迟之后发生。如果省略该参数,delay取默认值0。

  • param1, …, paramN (可选)
    附加参数,一旦定时器到期,它们会作为参数传递给function 或 执行字符串(setTimeout参数中的code)

所以现在我们可以直接通过如下方式传递参数

setTimeout(someFn, 5000 , 'hello world')

setInterval的使用方法和setTimeout一样

注意:
IE9 及更早的 IE 浏览器不支持第一种语法中向延迟函数传递额外参数的功能。如需要实现pollyfill,可以参考上面给的文档链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值