ECMAScript 与 JavaScript

一、一句话总结关系

ECMAScript 是标准(规矩),JavaScript 是语言(实现)。

  • ECMAScript(ES)规范文档,规定了 JS 应该有什么语法、功能、规则。
  • JavaScript(JS)具体实现,浏览器/Node 按照 ES 标准写出来的脚本语言。

比喻:
- ECMAScript = 菜谱
- JavaScript = 按照菜谱做出来的菜


二、历史来源

1995年:
- 网景公司发明 LiveScript
- 为了蹭 Java 热度,改名叫 JavaScript
- 为了统一语言标准,大家把核心语法提交给标准化组织
- 诞生了 ECMAScript 标准

所以:
JavaScript 包含了 ECMAScript


三、精确包含关系

完整的 JavaScript = 三部分组成

  1. ECMAScript(ES) —— 核心语法

    • 变量、数据类型
    • 函数、作用域、this
    • 原型、闭包
    • 数组、对象
    • ES6+ 新特性:解构、箭头函数、Promise、class 等
  2. DOM —— 操作网页元素

  3. BOM —— 操作浏览器窗口

也就是说:

ES 是 JS 的核心标准,JS 是 ES 的超集。


四、ECMAScript 版本发展史

最常听到的:ES5、ES6、ES7、ES2015+

1. ES5 (2009)

  • 浏览器全面支持
  • 基础 JS 语法

2. ES6 = ES2015(里程碑)

  • 2015年发布
  • 最大一次更新
  • 现在学的:解构、let/const、箭头函数、class、Promise、模块化 都是 ES6
  • 现在前端开发默认使用 ES6+

3. ES2016 ~ ES2024

每年更新一次,新增小特性:
- 可选链 ?.
- 空值合并 ??
- 数组新方法 etc.


五、最容易混淆的概念

1. ES6 和 ES2015 是什么关系?

完全一样!
- ES6 是俗称
- ES2015 是官方正式名称

2. 为什么会有 Babel?

因为:
- 老浏览器只支持 ES5
- 现在写 ES6+
- Babel = 把 ES6+ 编译成 ES5,让老浏览器能运行

3. Node.js 里的 JS 是什么?

Node.js 使用 V8引擎,实现了 ECMAScript 标准
所以 Node 里也能写 ES6+ 语法。


六、最清晰对比表

名称 身份 作用
ECMAScript 标准/规范 规定语法规则
JavaScript 编程语言 浏览器/Node 运行的语言
ES6 标准版本 2015年发布的语法规范
Babel 编译器 ES6+ 转 ES5

七、总结

  1. ECMAScript 是标准,JavaScript 是实现
  2. JavaScript 包含 ECMAScript + DOM + BOM
  3. ES6 = ES2015,是现代 JS 开发基础
  4. 现在写 Vue/React 用的都是 ES6+ 语法
  5. 平时说的“JS 语法”= 90% 都是“ECMAScript 语法”