这个奇怪的代码干什么的?
开始看到这段代码,一脸懵逼。为啥直接执行。
原理探究
js是单线程的,单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。 setTimeout(fn,0)
就是加到任务队列里面
demo
setTimeout(function(){ console.log(1);}, 0);console.log(2);console.log(3);复制代码
这样,这段代码输出结果为2 , 3 ,1。就得到了解释,因为setTimeOut设置为0,会在队列最后添加一个事件,要等待其他任务事件处理完成才会处理,所以 1 才会最后打印;
总结
让人懵逼的代码都是每理解原理的~~~