ES2015(ES6)——JS 工程化起点(2015)
let / const
What 块级作用域变量声明
Why 解决 var 变量提升、作用域混乱问题
When(什么时候用) 👉 所有新代码
const:默认选择let:需要重新赋值时
How(一句话)
const API_URL = ''
let count = 0Arrow Function
What 简化函数写法,绑定词法 this
Why 减少 this 指向错误,简化回调
When
- 回调函数
- Promise / Array 方法
- 需要 this = 外层作用域
❌ 不用于构造函数
How
items.map(i => i * 2)Class
What ES 原生类语法(语法糖)
Why 统一面向对象写法,提升可读性
When
- SDK
- 业务模型
- 状态管理对象
How
class User {}Promise
What 异步结果抽象对象
Why 解决回调地狱
When
- 接口请求
- 并发 / 串行任务
How
fetch().then().catch()Module(import / export)
What 原生模块系统
Why 替代 AMD / CommonJS,支持 Tree Shaking
When 👉 所有前端工程
How
export default fn
import fn from './fn'ES2016(2016)——小而实用
Array.includes
What 判断数组是否包含某值
Why 替代 indexOf !== -1
When
- 条件判断
- 权限 / 白名单
Exponentiation **
What 指数运算符
Why 提升数学表达可读性
When
- 数学计算
- 数据分析
ES2017(2017)——异步革命
async / await
What Promise 的同步写法
Why 让异步代码像同步一样清晰
When 👉 Promise 链超过 2 层 👉 需要 try/catch
How
await fetchData()Object.values / entries
What 对象遍历工具
Why 补齐 Object 遍历能力
When
- 表格渲染
- Map/Object 转换
ES2018(2018)——健壮性增强
Promise.finally
What 无论成功失败都执行
Why 解决 loading / cleanup 分散问题
When
- loading 状态
- 资源释放
Object Rest / Spread
What 对象解构与合并
Why 不可变数据操作更方便
When
- Redux / Vue 状态更新
ES2019(2019)——数据处理增强
Array.flat / flatMap
What 数组扁平化
Why 减少递归处理数组
When
- 树数据
- 接口数据整理
Object.fromEntries
What entries → object
Why 补齐 Object 构建能力
When
- URLSearchParams
- Map 转 Object
ES2020(2020)——安全访问时代 🔥
Optional Chaining ?.
What 安全访问属性
Why 防止 Cannot read property of undefined
When 👉 接口字段不稳定 👉 深层对象访问
Nullish Coalescing ??
What 只处理 null / undefined
Why 解决 || 误伤 0 / false
When
- 表单默认值
- 数值逻辑
BigInt
What 大整数类型
Why 突破 Number 精度限制
When
- 金额
- 超大 ID
ES2021(2021)——字符串 & Promise
replaceAll
What 全量字符串替换
Why 简化正则使用
When
- 编辑器
- 模板处理
Promise.any
What 首个成功 Promise
Why 容错与兜底请求
When
- CDN 灾备
- 多接口竞争
ES2022(2022)——工程体验升级
Array.at
What 安全索引访问
Why 提升语义清晰度
When
- 取最后一个元素
Top-level await
What 模块级 await
Why 简化初始化逻辑
When
- 配置加载
- Node / Vite
Class Fields / Private Fields
What 类字段 & 私有字段
Why 增强封装性
When
- SDK
- 复杂业务类
ES2023(2023)——数组增强
findLast / findLastIndex
What 从后往前查找
Why 减少反转数组
When
- 时间线
- 操作记录
ES2024(2024)——集合 & 时间
Set 新方法
What union / intersect / difference
Why 原生集合运算
When
- 权限系统
- 标签系统
Temporal
What 新一代时间 API
Why Date API 设计缺陷
When
- 时区
- 金融系统
ES2025(进行中)
Pipe Operator
What 函数管道语法
Why 提高函数组合可读性
When
- 函数式编程
- 数据处理流水线
Pattern Matching
What 结构化条件匹配
Why 替代 if / switch
When
- 状态机
- 复杂业务分支
一句话总结(架构视角)
JS 演进路线
- ES6:工程化基础,解决“能不能写”。
- ES8:异步可读性,ES8 解决“好不好写”
- ES11:安全 & 稳定,解决“写得稳不稳”
- ES14+:表达力 & 复杂系统
JS 这 11 年的进化路径非常清晰:
工程化 (2015-2016):引入类和模块,让 JS 具备构建大型应用的能力。
异步化 (2017-2019):彻底改变了异步流程控制,向开发者体验靠拢。
防御性 (2020-2022):通过语法层面规避常见的运行时报错。
精细化 (2023-2025):完善内置工具函数,减少对第三方库(如 Underscore/odash)的依赖。