三个层次
跳转到“三个层次”| 层次 | 包含内容 | 例子 |
|---|---|---|
| ECMAScript 语言 | 语法、类型、对象、函数、模块和 Promise | let、Map、async function |
| JavaScript 引擎 | 解析、编译、垃圾回收和执行代码 | V8、SpiderMonkey、JavaScriptCore |
| 宿主环境 | 语言规范之外的输入输出能力 | 浏览器 DOM、Node.js 文件系统 |
因此,document.querySelector() 不是 JavaScript 语言本身的 API,而是浏览器提供的 DOM API;fs.readFile() 则由 Node.js 提供。
关键语义
跳转到“关键语义”- 原始值与对象的赋值行为不同;对象变量保存的是引用值。
===不执行隐式类型转换,默认优先于==。- 函数形成词法作用域,闭包可以继续访问其定义位置的变量。
- 对象通过原型链复用行为,
class是建立在原型机制之上的语法。 - JavaScript 单个执行上下文按顺序运行;异步 I/O 完成后由事件循环安排后续任务。
最小异步模型
跳转到“最小异步模型”sequenceDiagram participant Code as 同步代码 participant Host as 宿主环境 participant Queue as 任务队列 Code->>Host: 发起异步操作 Code->>Code: 继续执行 Host->>Queue: 操作完成,登记回调 Queue->>Code: 调用栈清空后执行