JavaScript 究竟是怎样执行的?
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 摘要: 理解 JS 引擎运行原理。 作者:前端小智 原文: 搞懂 JavaScript 引擎运行原理 Fundebug 经授权转载,版权归原作者所有。 一些名词 JS 引擎 — 一个读取代码并运行的引擎,没有单一的“JS 引擎”;每个浏览器都有自己的引擎,如谷歌有 V。 作用域 — 可以从中访问变量的“区域”。 词法作用域 — 在词法阶段的作用域,换句话说,词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域不变。 块作用域 — 由花括号{}创建的范围 作用域链 — 函数可以上升到它的外部环境(词法上)来搜索一个变量,它可以一直向上查找,直到它到达全局作用域。 同步 — 一次执行一件事, “同步”引擎一次只执行一行,JavaScript 是同步的。 异步 — 同时做多个事,JS 通过 浏览器 API 模拟异步行为 事件循环(Event Loop) - 浏览器 API 完成函数调用的过程,将回调函数推送到回调队列(callback queue),然后当堆栈为空时,它将回调函数推送到调用堆栈。 堆栈 —一种数据结构,只能将元素推入并弹出顶部元素。 想想堆叠一个字形的塔楼; 你不能删除中间块,后进先出。 堆 — 变量存储在内存中。 调用堆栈 — 函数调用的队列