Open Chocolate1999 opened 3 years ago
setTimeout的作用是将代码推迟到指定时间执行,如果指定时间为0,即setTimeout(f,0),那么会立刻执行吗?
答案是不会。因为setTimeout运行机制说过,必须要等到当前脚本的同步任务和“任务队列”中已有的事件,全部处理完以后,才会执行setTimeout指定的任务。也就是说,setTimeout的真正作用是,在“任务队列”的现有事件的后面再添加一个事件,规定在指定时间执行某段代码。setTimeout添加的事件,会在下一次Event Loop执行。
setTimeout(f,0)将第二个参数设为0,作用是让 f 在现有的任务(脚本的同步任务和“任务队列”中已有的事件)一结束就立刻执行。
f
也就是说,setTimeout(f,0)的作用是,尽可能早地执行指定的任务。
setTimeout(function (){ console.log("你好!"); }, 0);
上面代码的含义是,尽可能早地显示“你好!”。
(function () { console.log(1); })(); console.log(2);
打印结果: 1 2
setTimeout(function () { console.log(1); }, 0) console.log(2);
打印结果: 2 1
本文参考:
setTimeout第二个参数为0时和匿名自执行函数区别
setTimeout(f,0)
setTimeout的作用是将代码推迟到指定时间执行,如果指定时间为0,即setTimeout(f,0),那么会立刻执行吗?
答案是不会。因为setTimeout运行机制说过,必须要等到当前脚本的同步任务和“任务队列”中已有的事件,全部处理完以后,才会执行setTimeout指定的任务。也就是说,setTimeout的真正作用是,在“任务队列”的现有事件的后面再添加一个事件,规定在指定时间执行某段代码。setTimeout添加的事件,会在下一次Event Loop执行。
setTimeout(f,0)将第二个参数设为0,作用是让
f
在现有的任务(脚本的同步任务和“任务队列”中已有的事件)一结束就立刻执行。上面代码的含义是,尽可能早地显示“你好!”。
和匿名自执行函数区别
打印结果: 1 2
打印结果: 2 1
本文参考: