setTimeout(1)和setTimeout(2)的区别
let time1 = setTimeout(1)
let time2 = setTimeout(2)
区别如下:
返回值timeoutID不一样
code值不一样
执行的时间不一样
返回值timeoutID不一样
每个 setTimeout 会对应一个 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]);
这两个定时器方法在参数上,除了可以接受 function
,还可以接受 code
。
传入code这种是一个可选语法,你可以使用字符串而不是 function,在 delay
毫秒之后编译和执行字符串
但是需要注意,使用该语法是不推荐的,原因和使用 eval()
一样,有安全风险。
执行的时间不一样
虽然在不设定 delay 延时时间的情况下,都是默认延时 0 毫秒执行,但是 setTimeout
有一个显著的缺陷在于时间是不精确的:setTimeout/setInterval定时器 只能保证延时或者间隔不小于设定的时间。因为它们实际上只是把任务添加到了任务队列中,但是如果前面的任务还没有执行完成,它们必须要等待。
所有《每日一题》的 知识大纲索引脑图 整理在此:https://www.yuque.com/dfe_evernote/interview/everyday
你也可以点击文末的 “阅读原文” 快速跳转
评论