JS setTimeout()和setInterval()(二十三)

setTimeout
setTimeout()是属于window的方法,通常使用时会省略window这个顶层物件名称。用于在指定的毫秒数后调用函数或计算表达式。
语法:

setTimeout('method'(要执行的method),time(指定的等候时间))

setTimeout不会重复
可以使用clearTimeout(对象)清除已设置的setTimeout对象

setInterval
setInterval()
属于window的方法,通常使用时会省略window这个顶层物件名称。可按照指定的周期(以毫秒计)来调用函数或计算表达式
语法:

setInterval('method',time)

setInterval会自动重复
可以使用clearInterval(对象)来清除已设置的setInterval对象。

setInterval和setTimeout的一些坑:
1.在使用上述两个方法是,传递的第一个函数在直接使用函数名时,不可传递参数,否则不会延时而直接运行。

window.setTimeout(getSome(num),3000)

上述代码不会延时3秒执行,而是直接执行。
在这种时候可以将函数以字符串的形式传递。

window.setTimeout("getSome('数据'),3000")

上述代码可以延时3秒执行。
注:在使用字符串传递时,参数只能传递你需要的数据,不能通过声明对象的方式传递

let name = 'zzzz'
window.setTimeout("getSome(name)",300)

上述代码不会运行,会报错

还可以使用下述代码解决:

   function GetSome(str) {
        xxxx
   }
   function getSome(str) {
        return function(){ 
            GetSome(str)
        }
   }
   let str = 'xxx'
   window.setTimeout(getSome(str),3000)

这里定义getSome(str)方法,用于接收一个参数,并返回一个不带参数的函数。在setTimeout函数中,使用getSome(str)方法来返回一个不带参数函数句柄,从而实现了参数传递的功能。

2.在使用setInterval()方法时,传递的函数不可添加(),否则不会重复执行

function hello() {
     console.log('hello')
}
setInterval(helle(),2000)

上述代码只会执行一次。

function hello() {
     console.log('hello')
}
setInterval(hello,2000)

上述代码可以重复执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值