

JS 里的一种任务分类方式分为: 同步任务和异步任务
虽然 JS 是单线程的,但是浏览器的内核却是多线程的,在浏览器的内核中不同的异步操作由不同的浏览器内核模块调度执行,异步任务操作会将相关回调添加到任务队列中
而不同的异步操作添加到任务队列的时机也不同,比如onclick, setTimeout, ajax 处理的方式都不同
这些异步操作是由浏览器内核来执行的,浏览器内核上包含 3 种 webAPI,分别是 DOM Binding(DOM绑定)、network(网络请求)、timer(定时器)模块
按照这种分类方式:JS 的执行机制是
js 代码是同步还是异步,不停的检查调用栈中是否有任务需要执行,如果没有,就检查任务队列,从中弹出一个任务,放入栈中,如此往复循环,要是同步就进入主进程,异步就进入事件表以上三步循环执行,这就是事件循环(event loop),它是连接任务队列和控制调用栈的
在面试当中事件循环机制问得也比较多,如果您有疑问,欢迎评论下方留言,一起学习探讨