settimeout定时器延时失效
在使用settimeout延时执行定时器时,定时失效,回调函数没有延时执行,而是立即执行
for example 1:正常是延时2s打印“ok”,但是却运行后就打印
function test() {
console.log("ok")
}
setTimeout(test(),2000)
setTimeout(回调函数,延时时间),其中回调函数是延时时间到了才执行,不是立即执行;在上面的例子中test()函数直接被主动调用,所以就立即执行,而没有在延时到了之后被调用,拿到的只是函数的返回值
for example 2:先是直接打印"1",延时2s打印"2"
function a() {
console.log("1")
return function(){
console.log("2")
}
}
setTimeout(a(),2000)
在此函数中,先是直接调用函数a(),setTimeout接收到该函数返回值,2s后执行返回函数打印"2"
修改写法:
第一种写法:
for example 3:延时2s打印"ok"
function test() {
console.log("ok")
}
setTimeout("test()",2000)
第二种写法:
for example 4:延时2s打印"ok"
function test() {
console.log("ok")
}
setTimeout(()=>test(),2000)
第三种写法:
for example 5:延时2s打印"ok"
function test() {
console.log("ok")
}
setTimeout(test,2000)
因为setTimeout(code, milliseconds, param1, param2, ...)中,code为 javascript代码字符串或者函数写法、或者是直接写函数名
|