V8 主要版本与对应 ECMAScript 支持
V8 是 Google 开发的 JavaScript 引擎,用于 Chrome、Edge 和 Node.js。它不断更新以支持最新的 ECMAScript(ES)标准。以下是 V8 主要版本与对应 ECMAScript 支持 的关系,以及关键特性变化。
V8 版本与 ECMAScript 支持对照表
V8 版本 | 对应 Chrome/Node.js 版本 | 主要支持的 ES 版本 | 关键新增特性 |
---|---|---|---|
V8 6.x (2017) | Chrome 63, Node.js 10 | ES2017 | async/await 、Object.values/entries |
V8 7.x (2019) | Chrome 79, Node.js 12 | ES2019 | Array.prototype.flat/flatMap 、Object.fromEntries |
V8 8.x (2020) | Chrome 84, Node.js 14 | ES2020 | Promise.allSettled 、BigInt 、globalThis |
V8 9.x (2021) | Chrome 91, Node.js 16 | ES2021 | String.prototype.replaceAll 、Logical Assignment (` |
V8 10.x (2022) | Chrome 104, Node.js 18 | ES2022 | 类字段(#private )、Array.prototype.at() 、Error.cause |
V8 11.x (2023) | Chrome 113, Node.js 20 | ES2023 | Array.prototype.findLast/findLastIndex 、Hashbang 支持 |
V8 12.x (2024) | Chrome 122+, Node.js 21+ | ES2024(部分) | Records & Tuples(实验性)、Set.prototype.union/difference |
详细 ECMAScript 特性支持
1. ES2017(V8 6.x+)
async/await
(异步函数)Object.values()
/Object.entries()
String.prototype.padStart/padEnd
2. ES2019(V8 7.x+)
Array.prototype.flat()
/flatMap()
Object.fromEntries()
(键值对 → 对象)Optional catch binding
(try {} catch {}
不带参数)
3. ES2020(V8 8.x+)
BigInt
(大整数运算)Promise.allSettled()
(无论成功/失败都返回)globalThis
(统一的全局对象)- 可选链操作符(
obj?.prop
)
4. ES2021(V8 9.x+)
String.prototype.replaceAll()
(全局替换)- 逻辑赋值运算符(
a ||= b
、a &&= b
) Numeric separators
(1_000_000
可读性)
5. ES2022(V8 10.x+)
- 类私有字段 & 方法(
#privateField
) Array.prototype.at(-1)
(支持负数索引)Error.cause
(链式错误传递)Top-Level await
(模块顶层直接await
)
6. ES2023(V8 11.x+)
Array.prototype.findLast()
/findLastIndex()
Hashbang
支持(#!/usr/bin/env node
)Symbol.asyncDispose
(资源管理)
7. ES2024(V8 12.x+,部分实验性)
- Records & Tuples(不可变数据结构
#{ x: 1 }
/#[1, 2]
) Set.prototype.union()
/intersection()
(集合操作)- 管道操作符(
|>
,实验阶段)
如何检查当前 V8 的 ES 支持?
- 浏览器(Chrome/Edge):
- 访问
chrome://version
查看 V8 版本。 - 在开发者工具(F12)控制台测试新语法(如
Array.prototype.at(-1)
)。
- 访问
- Node.js:
- 运行
node -p process.versions.v8
查看 V8 版本。 - 使用
node --v8-options | grep "in progress"
查看实验性特性。
- 运行
总结
- V8 版本 ≈ Chrome/Node.js 版本,每个大版本对应一个 ES 标准。
- ES2020+ 特性(如
BigInt
、可选链) 在 V8 8.x+ 才完全支持。 - ES2022+(类私有字段、
Array.at()
) 需要 V8 10.x+。 - 实验性功能(如 Records & Tuples) 需手动启用标志(
--harmony
)。
如果需要兼容旧环境(如 IE 或低版本 Node.js),可使用 Babel 或 core-js 进行转译。