JavaScript 诞生 20 年后的革命性升级,首次引入类(Class)
、模块(Module)
、Promise
等现代化特性,彻底改变开发范式。
解决了 ES5 遗留的代码组织混乱、异步编程困难等问题,为大型应用开发奠定基础。
浏览器性能大幅提升(如 Chrome V8 引擎),前端框架(React、Angular)兴起,开发者需要更强大的语言特性支持复杂应用。
ES6 新增了大量颠覆性特性,以下为分类解析:
let
和 const
let
for (let i = 0; i < 3; i++) {
console.log(i); // 每次循环独立作用域
}
const
const PI = 3.14;
const config = { api: 'https://example.com' };
config.api = 'https://new.com'; // 合法(对象属性可修改)
const name = 'Alice';
const message = `Hello, ${name}! Today is ${new Date()}.`;
this
,避免传统函数中 this
指向问题。const add = (a, b) => a + b; // 简写形式
const array = [1, 2, 3];
array.map(x => x * 2); // 箭头函数保持外部 this
// 数组解构
const [first, second] = [1, 2, 3]; // first=1, second=2
// 对象解构
const { name, age } = { name: 'Bob', age: 25 }; // name='Bob', age=25
undefined
。function greet(name = 'Guest') {
console.log(`Hello, ${name}!`);
}
greet(); // 输出 "Hello, Guest!"
// 展开运算符
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4]; // [1, 2, 3, 4]
// 剩余参数
function sum(...numbers) {
return numbers.reduce((a, b) => a + b, 0);
}
sum(1, 2, 3); // 6
extends
和 super
。class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog('Rex');
dog.speak(); // "Rex barks."
import
和 export
实现代码的模块化,支持按需加载。// 导出
export const name = 'Alice';
export function greet() { /* ... */ }
// 导入
import { name, greet } from './module.js';
async/await
语法更直观。function fetchData() {
return new Promise((resolve) => {
setTimeout(() => resolve('Data'), 1000);
});
}
fetchData().then(data => console.log(data)); // "Data"
// async/await 语法
async function getData() {
const data = await fetchData();
console.log(data); // "Data"
}
Set
和 Map
Set
:存储唯一值的集合,支持快速查找。Map
:键值对集合,键可以是任意类型。const set = new Set([1, 2, 2, 3]); // Set {1, 2, 3}
const map = new Map([['name', 'Alice'], ['age', 25]]);
map.get('name'); // "Alice"
class
和 module
使 JavaScript 支持面向对象和模块化开发,代码结构更清晰。
Promise
和 async/await
彻底解决异步编程回调地狱问题,提升代码可读性。
React、Vue、Angular 等框架广泛采用 ES6 特性(如类组件、模块化),推动前端工程化。
浏览器引擎(如 V8)针对 ES6 特性(如箭头函数、Map
)进行优化,提升运行效率。
ES6 兼容 ES5,但部分新特性(如 let
、class
)需转译工具(如 Babel)支持旧浏览器。
1.学习价值:
class
、module
、Promise
等特性对学习 React、Vue 等框架至关重要。2.工具链兼容性:
特性 |
ES5 |
ES6 |
变量声明 |
仅 (函数作用域) |
新增 (块级作用域)、 |
类与继承 |
依赖原型链( ) |
新增 语法糖 |
模块化 |
无原生支持(需 CommonJS/AMD) |
新增 / |
异步编程 |
回调函数 |
新增 、 |
数组方法 |
、 等 |
新增 、 等 |
对象扩展 |
|
新增 、 |
类(Class)的实质:
ES6 的 class
仅为语法糖,底层仍基于原型继承,初学者可能误解其为传统类继承。
模块化兼容性:
早期浏览器需通过 或打包工具(如 Webpack)支持 ES6 模块。
性能开销:
某些特性(如 Proxy
)在旧引擎中性能较低,需谨慎使用。
ES6 是 JavaScript 生态的“现代化革命”,它通过引入类
、模块
、Promise
等特性,将语言从“脚本工具”提升为“专业编程语言”。ES6 不仅解决了 ES5 的遗留问题,更直接推动了前端框架的爆发(如 React、Vue)和工程化实践(如 Webpack、Babel)。
对现代开发的影响:
async/await
、ES2022 的 Top-Level Await
)。学习建议:
ES6 是 JavaScript 生态的“成人礼 3.0”,它的现代化特性为后续 10 年的技术创新奠定了基础。理解 ES6,是掌握 JavaScript 演进史与语言哲学的关键一步。