【一文读懂】ECMAScript

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 成为一种更加强大和灵活的语言。

你可能感兴趣的:(ecmascript)