ES6(ECMAScript 2015) 是 JavaScript 语言的第六个主要版本,于2015年发布。它是 JavaScript 自诞生以来最大的一次更新,引入了许多新特性,使 JavaScript 更现代化、更强大、更易读和易维护。
主要特性:
let和const声明- 替代
var,提供块级作用域。 const用于声明常量(不可重新赋值)。
- 替代
- 箭头函数(Arrow Functions)
// ES5
function add(a, b) { return a + b; }
// ES6
const add = (a, b) => a + b;
- 模板字符串(Template Literals)
const name = "World";
console.log(`Hello, ${name}!`); // 支持多行和嵌入表达式
- 解构赋值(Destructuring)
// 数组解构
const [x, y] = [1, 2];
// 对象解构
const { name, age } = { name: "Alice", age: 25 };
- 默认参数(Default Parameters)
function greet(name = "Guest") {
console.log(`Hello, ${name}`);
}
- 展开与剩余运算符(Spread & Rest)
// 展开数组
const arr = [1, 2, 3];
const newArr = [...arr, 4];
// 剩余参数
const sum = (...args) => args.reduce((a, b) => a + b);
- 类(Classes)
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, ${this.name}`);
}
}
- 模块化(Modules)
// 导出
export const pi = 3.14;
// 导入
import { pi } from './math.js';
- Promise 和异步编程
- 提供更优雅的异步处理方式(后续 ES7/ES8 引入
async/await)。
- 提供更优雅的异步处理方式(后续 ES7/ES8 引入
- 新的数据结构
Map、Set、WeakMap、WeakSet。
- 增强的对象字面量
const name = "Alice";
const obj = { name, greet() { console.log(this.name); } };
- 迭代器和生成器(Iterators & Generators)
function* idGenerator() {
let id = 0;
while (true) yield id++;
}
为什么 ES6 重要?
- 现代化语法:减少代码冗余,提升开发效率。
- 更好的编程模式:支持模块化、面向对象编程。
- 浏览器和 Node.js 广泛支持(现代环境已原生支持大部分特性)。
- 前端生态的基础:React、Vue、Angular 等框架广泛使用 ES6+。
兼容性处理
对于旧环境(如旧版浏览器),通常使用 Babel 等工具将 ES6+ 代码转译为 ES5 语法,确保兼容性。
ES6 是 JavaScript 发展的里程碑,后续版本(ES7/ES8/ES9...)每年持续更新,但 ES6 是这些现代特性的核心基础。