setTimeout(1)和setTimeout(2)的區(qū)別

let?time1?=?setTimeout(1)
let?time2?=?setTimeout(2)
區(qū)別如下:
返回值timeoutID不一樣
code值不一樣
執(zhí)行的時間不一樣
返回值timeoutID不一樣
每個 setTimeout 會對應(yīng)一個 timeoutID,即定時器的編號。這個 timeoutID 可以傳遞給 clearTimeout()來取消定時器。
code值不一樣
setTimeout/setInterval 的語法
var?timeoutID?=?scope.setTimeout(function[,?delay,?arg1,?arg2,?...]);
var?timeoutID?=?scope.setTimeout(function[,?delay]);
var?timeoutID?=?scope.setTimeout(code[,?delay]);
這兩個定時器方法在參數(shù)上,除了可以接受 function,還可以接受 code。
傳入code這種是一個可選語法,你可以使用字符串而不是 function,在 delay 毫秒之后編譯和執(zhí)行字符串
但是需要注意,使用該語法是不推薦的,原因和使用 eval()一樣,有安全風(fēng)險。
執(zhí)行的時間不一樣
雖然在不設(shè)定 delay 延時時間的情況下,都是默認(rèn)延時 0 毫秒執(zhí)行,但是 setTimeout 有一個顯著的缺陷在于時間是不精確的:setTimeout/setInterval定時器 只能保證延時或者間隔不小于設(shè)定的時間。因為它們實際上只是把任務(wù)添加到了任務(wù)隊列中,但是如果前面的任務(wù)還沒有執(zhí)行完成,它們必須要等待。
所有《每日一題》的 知識大綱索引腦圖 整理在此:https://www.yuque.com/dfe_evernote/interview/everyday
你也可以點擊文末的 “閱讀原文” 快速跳轉(zhuǎn)

評論
圖片
表情
