Skip to content

ECMAScript 2015

ECMAScript 2015(ES6)于 2015 年 6 月发布。

核心特性

1. 块级作用域声明

  • let声明:用于声明块级作用域的变量,避免了 var 声明的变量提升问题。
javascript
{
  let x = 10;
  console.log(x); // 输出: 10
}
console.log(x); // ReferenceError: x is not defined
  • const声明:用于声明常量,一旦赋值后不可更改。
javascript
const PI = 3.14159;
console.log(PI); // 输出: 3.14159
PI = 3; // TypeError: Assignment to constant variable.

2. 箭头函数

引入了更简洁的函数定义语法,并且不绑定自己的this

javascript
const numbers = [1, 2, 3];
const squares = numbers.map((n) => n * n);
console.log(squares); // 输出: [1, 4, 9]

3. 模板字符串

使用反引号(`)定义多行字符串,并支持嵌入表达式。

javascript
const name = "Alice";
const greeting = `Hello, ${name}!`;
console.log(greeting); // 输出: Hello, Alice!

4. 解构赋值

允许从数组或对象中提取值,赋值给变量。

javascript
// 数组解构
const [a, b] = [1, 2];
console.log(a); // 输出: 1
console.log(b); // 输出: 2

// 对象解构
const { name, age } = { name: "Bob", age: 25 };
console.log(name); // 输出: Bob
console.log(age); // 输出: 25

5. 默认参数

为函数参数设置默认值。

javascript
function greet(name = "Guest") {
  console.log(`Hello, ${name}!`);
}

greet(); // 输出: Hello, Guest!
greet("Alice"); // 输出: Hello, Alice!

6. 展开运算符

用于展开数组或对象。

javascript
// 数组展开
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4];
console.log(arr2); // 输出: [1, 2, 3, 4]

// 对象展开
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
console.log(obj2); // 输出: {a: 1, b: 2, c: 3}

7. 类(Class)

引入了基于原型的面向对象编程语法糖

javascript
class Person {
  constructor(name) {
    this.name = name;
  }

  greet() {
    console.log(`Hello, my name is ${this.name}.`);
  }
}

const alice = new Person("Alice");
alice.greet(); // 输出: Hello, my name is Alice.

8. 模块(Modules)

javascript
// 导出模块(math.js)
export function add(x, y) {
  return x + y;
}

// 导入模块
import { add } from "./math.js";
console.log(add(2, 3)); // 输出: 5

9. Promise

用于处理异步操作,避免回调地狱

javascript
const promise = new Promise((resolve, reject) => {
  // 异步操作
  setTimeout(() => {
    resolve("Success!");
  }, 1000);
});

promise.then((result) => {
  console.log(result); // 输出: Success!
});

兼容性

Chrome 51+
Firefox 53+
Safari 10+
Edge 14+
IE 不支持

注:兼容性数据可能随着版本的更新而有所调整,建议开发者根据项目的具体需求参考最新的浏览器版本和 Polyfill 支持情况。

总结

ECMAScript 2015(ES6),是 JavaScript 语言的一个重要更新版本。它引入了许多新特性和改进,旨在使代码更加简洁、高效和易于维护。

参考文献

ECMA-262 2015 规范 👉

Released under the MIT License.