👍 「硬核JS」一次搞懂JS运行机制 (opens new window)

# 基础

  • 进程:cpu 资源分配的最小单位

  • 线程:cpu 调度的最小单位、线程是建立在进程上的基础运行单位(通俗点解释线程就是程序中的一个执行流,一个进程可以有多个线程)

  • JS是单线程

  • JS 在 Browser 和 Nodejs 环境种运行

# 前言--Browser(浏览器)环境

Browser(浏览器)是多进程应用 - Browser进程 - 渲染进程(重) - GUI GUI渲染线程 - JS引擎线程 - 事件触发线程 - 定时触发器线程 - 异步http请求线程 - 第三方插件进程 - GPU进程

# JS 运行机制

事件循环(Event Loop)初探 - 执行栈 & 任务队列 - 同步任务 - 异步任务 - 微任务 - promise(then,catch,finally) - async/await - Object.observe - MutationObserve - 宏任务 - 主体代码 - setTimeout & setInterval

# 备注

启用宏任务API setTimeout(()=>{},time)、setInterval(()=>{},time) 启用微任务API(ES2017) queueMicrotask(()=>{})