首页 文章详情

setTimeout(1)和setTimeout(2)的区别

前端印记 | 718 2021-10-20 17:40 0 0 0
UniSMS (合一短信)

let time1 = setTimeout(1)
let time2 = setTimeout(2)

区别如下:

  • 返回值timeoutID不一样

  • code值不一样

  • 执行的时间不一样

返回值timeoutID不一样

每个 setTimeout 会对应一个 timeoutID,即定时器的编号。这个 timeoutID 可以传递给 clearTimeout()来取消定时器。

code值不一样

setTimeout/setInterval 的语法

var timeoutID = scope.setTimeout(function[, delayarg1arg2, ...]);
var timeoutID = scope.setTimeout(function[, delay]);
var timeoutID = scope.setTimeout(code[, delay]);

这两个定时器方法在参数上,除了可以接受 function,还可以接受 code

传入code这种是一个可选语法,你可以使用字符串而不是 function,在 delay 毫秒之后编译和执行字符串

但是需要注意,使用该语法是不推荐的,原因和使用 eval()一样,有安全风险。

执行的时间不一样

虽然在不设定 delay 延时时间的情况下,都是默认延时 0 毫秒执行,但是 setTimeout 有一个显著的缺陷在于时间是不精确的:setTimeout/setInterval定时器 只能保证延时或者间隔不小于设定的时间。因为它们实际上只是把任务添加到了任务队列中,但是如果前面的任务还没有执行完成,它们必须要等待。

所有《每日一题》的 知识大纲索引脑图 整理在此:https://www.yuque.com/dfe_evernote/interview/everyday
你也可以点击文末的 “阅读原文” 快速跳转


END
愿你历尽千帆,归来仍是少年。


good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter