ECMAScript(通常简称为 ES)是一种脚本语言的标准规范,由欧洲计算机制造商协会(ECMA International)制定。JavaScript 是最著名的实现了 ECMAScript 规范的语言,广泛用于 Web 开发。
ECMAScript 定义了语言的核心语法和特性,但不包括任何关于图形界面、网络请求等与平台相关的 API,这些通常是 JavaScript 运行时环境提供的额外功能,例如浏览器中的 DOM(文档对象模型)或 Node.js 中的文件系统模块。
ECMAScript 版本
ECMAScript 的发展经历了多个版本:
- ES1 (ECMAScript 1997):首个版本。
- ES2 (ECMAScript 1998):增加了少量改进。
- ES3 (ECMAScript 1999):引入了更广泛的更新。
- ES4 (未发布):计划的一个版本,但最终没有正式发布。
- ES5 (ECMAScript 2009):提供了更严格的数据类型检查和数组方法。
- ES6 / ES2015:引入了许多新特性,如箭头函数、类、模块等。
- ES7 / ES2016:新增了
Array.includes()
方法等。 - ES8 / ES2017:带来了 async/await、Object.values/Object.entries 等。
- ES9 / ES2018:引入了 REST 客户端、异步迭代器等。
- ES10 / ES2019:新增了扁平化数组的
Array.flat()
和Array.flatMap()
等。 - ES11 / ES2020:包含了
Promise.allSettled()
和动态导入等。 - ES12 / ES2021:继续增强语言特性和性能。
- ES13 / ES2022:进一步改进,如类字段的顶级 await。
- ES14 / ES2023:增强了模式匹配等功能。
示例:ES6 新特性
让我们通过几个 ES6 的新特性来举例说明:
1. 箭头函数
箭头函数提供了一种更简洁的方法来声明函数,而且自动绑定 this
到父作用域。
javascript
深色版本
1const add = (x, y) => x + y;
2
3const obj = {
4 multiply: (x, y) => x * y,
5};
6console.log(add(1, 2)); // 3
7console.log(obj.multiply(2, 3)); // 6
2. 解构赋值
解构赋值允许您按照一定模式从数组或对象中提取值到变量。
javascript
深色版本
1const [a, b] = [1, 2];
2console.log(a); // 1
3console.log(b); // 2
4
5const {firstName, lastName} = {firstName: 'John', lastName: 'Doe'};
6console.log(firstName); // John
7console.log(lastName); // Doe
3. 模块
ES6 引入了模块的概念,允许更安全地导出和导入代码片段。
example.js
javascript
深色版本
1export const message = 'Hello, world!';
2export function greet(name) {
3 return `${message} ${name}`;
4}
app.js
javascript
深色版本
1import { message, greet } from './example.js';
2console.log(message); // Hello, world!
3console.log(greet('Alice')); // Hello, world! Alice
4. 类
虽然 JavaScript 一直是基于原型的,ES6 提供了基于类的继承语法。
javascript
深色版本
1class Animal {
2 constructor(name) {
3 this.name = name;
4 }
5 speak() {
6 console.log(`${this.name} makes a sound.`);
7 }
8}
9
10class Dog extends Animal {
11 speak() {
12 console.log(`${this.name} barks.`);
13 }
14}
15
16const d = new Dog('Misty');
17d.speak(); // Misty barks.
以上仅是 ECMAScript 的冰山一角。随着每年的新版本,ECMAScript 继续引入新的特性和改进,使得 JavaScript 成为一种更加强大和灵活的语言。