页面

JavaScript

← 返回兔子洞总览

从一个朴素问题出发——“JavaScript 不是只有一门语言吗,为什么还分浏览器、Node.js、运行时?”——一路追到 JS 引擎、宿主环境、事件循环和异步 API 的边界。

推荐阅读顺序

# 一句话
01 JavaScript 运行时 JS 引擎只负责执行语言本身;宿主运行时补出事件循环、异步 API、GC、内存边界和 native bridge 等能力
02 事件循环 vs 游戏帧循环 Promise.then 是 JS 微任务,不是下一帧;Cocos 的 scheduleOnce / update 属于引擎帧调度
03 内存与生命周期 GC 只按可达性回收对象;业务还要主动结束事件、定时器、异步任务和 native 资源的生命周期
04 语言语义 普通函数的 this 看调用方式;闭包保存词法环境;相等与空值由各自的规范算法决定
05 Promise 与错误流 Promise 传播未来的成功值和失败原因;await 把 rejection 接回当前 async 函数的异常流
06 ECMAScript、模块与兼容 ES5/ES2015 是语言版本,CommonJS/ESM 是模块系统,转译和 polyfill 又分别属于另外两层

对话覆盖地图

主线 关键问题 笔记
语言、引擎、宿主 JavaScript、ECMAScript、V8/JSC、浏览器/Node/Cocos 分别是谁 01
异步调度 Promise、宏任务/微任务、then 是否隔帧、游戏帧循环 0102
内存与生命周期 GC、闭包引用、事件解绑、异步过期、JS/native 资源 03
函数与对象语义 thisbind、箭头函数、闭包 vs 类 04
比较与空值 =====ToPrimitivenullundefined 04
异步结果与错误 Promise 状态和链、throwtry/catch/finally 05
标准、模块、兼容 ES5/ES6、CommonJS/ESM、TypeScript/Babel、polyfill 06
游戏运行时边界 Cocos scheduler、JSB/native bridge、资源生命周期 010203

母题

本洞继续印证 …/patterns.md 里的"分层 + 封装"和"在更弱的底座上补出更强的抽象":ECMAScript 只定义语言核心,真正能做事的应用能力由宿主环境和引擎调度在外面补齐。