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)
上述代码可以重复执行。