ECMAScript 与 JavaScript
一、一句话总结关系
ECMAScript 是标准(规矩),JavaScript 是语言(实现)。
- ECMAScript(ES):规范文档,规定了 JS 应该有什么语法、功能、规则。
- JavaScript(JS):具体实现,浏览器/Node 按照 ES 标准写出来的脚本语言。
比喻:
- ECMAScript = 菜谱
- JavaScript = 按照菜谱做出来的菜
二、历史来源
1995年:
- 网景公司发明 LiveScript
- 为了蹭 Java 热度,改名叫 JavaScript
- 为了统一语言标准,大家把核心语法提交给标准化组织
- 诞生了 ECMAScript 标准
所以:
JavaScript 包含了 ECMAScript
三、精确包含关系
完整的 JavaScript = 三部分组成
-
ECMAScript(ES) —— 核心语法
- 变量、数据类型
- 函数、作用域、this
- 原型、闭包
- 数组、对象
- ES6+ 新特性:解构、箭头函数、Promise、class 等
-
DOM —— 操作网页元素
- 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 |
七、总结
- ECMAScript 是标准,JavaScript 是实现
- JavaScript 包含 ECMAScript + DOM + BOM
- ES6 = ES2015,是现代 JS 开发基础
- 现在写 Vue/React 用的都是 ES6+ 语法
- 平时说的“JS 语法”= 90% 都是“ECMAScript 语法”