JS事件执行机制

JS是一个单线程的语言,执行代码时总是先将执行栈内的任务做完才会通过一个事件轮循的方式取查看任务执行队列中有没有事件。有就拿出来执行。


在chrome的控制太粘贴这一段代码

var a = 1;
setTimeout(function(){a = 0;}, 30);
for(let i = 0; i < 1000; i++){
    if(a){console.log(1)}
}
for(let i = 0; i < 1000; i++){
    if(a){console.log(2)}
}
console.log('a',a)


可以看到他输出了1000次 1 和1000次2,但是这1000次的执行时间是肯定大于了30ms的,但是直到最后打印a, a的值都依然是1。 直到我们手动第二次输入a的时候a的值才变成了0.

由此可见JS是将现有的代码都执行完了才会通过事件轮循机制查看任务队列。

猜你喜欢

转载自blog.csdn.net/qq_37746973/article/details/80139397
今日推荐