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

前端印记

共 927字,需浏览 2分钟

 ·

2021-10-20 17:40

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
愿你历尽千帆,归来仍是少年。


浏览 108
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报