Skip to content

ES2015(ES6)——JS 工程化起点(2015)


let / const

What 块级作用域变量声明

Why 解决 var 变量提升、作用域混乱问题

When(什么时候用) 👉 所有新代码

  • const:默认选择
  • let:需要重新赋值时

How(一句话)

js
const API_URL = ''
let count = 0

Arrow Function

What 简化函数写法,绑定词法 this

Why 减少 this 指向错误,简化回调

When

  • 回调函数
  • Promise / Array 方法
  • 需要 this = 外层作用域

❌ 不用于构造函数

How

js
items.map(i => i * 2)

Class

What ES 原生类语法(语法糖)

Why 统一面向对象写法,提升可读性

When

  • SDK
  • 业务模型
  • 状态管理对象

How

js
class User {}

Promise

What 异步结果抽象对象

Why 解决回调地狱

When

  • 接口请求
  • 并发 / 串行任务

How

js
fetch().then().catch()

Module(import / export)

What 原生模块系统

Why 替代 AMD / CommonJS,支持 Tree Shaking

When 👉 所有前端工程

How

js
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

js
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)的依赖。