以下是 ECMAScript 2015(ES6) 的总结,依照既定的「概览 → 新特性一览 → 总结」格式:
🧩 一、总体概览
ECMAScript 2015(ES6)在 2015 年 6 月发布,是 JavaScript 史上最重要的里程碑之一。 这一版本为语言带来了模块系统、类、箭头函数、Promise 等核心能力,被视作“现代 JavaScript”的起点。 目标是让 JS 具备工程化开发所需的模块化、语法糖与底层能力。
🚀 二、主要新特性一览
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 0); // 0,1,2
}
告别 var 的函数作用域困扰,提供不可变绑定 const,配合 TDZ(暂时性死区)避免未初始化访问。
const ids = items.map(item => item.id);
更短的函数表达式,并绑定词法 this,简化回调、类方法中的 this 处理。
class Todo {
constructor(title) {
this.title = title;
}
toggle() {
this.done = !this.done;
}
}
以语法糖形式封装原型继承,让面向对象模式更直观,支持 super、静态方法等。
export const PI = 3.14;
import { PI } from './math.js';
引入静态模块系统,支持按需导入导出,成为现代打包器与浏览器模块加载的基础。
const msg = `Hello, ${user.name}!`;
支持多行字符串与插值表达式,同时搭配标签模板构建安全拼接(如 HTML 转义、i18n)。
const { id, title } = todo;
const [first, ...rest] = list;
让对象、数组解构绑定更直接,提高数据重组与函数参数默认值的可读性。
function fetchList(page = 1, { pageSize = 20 } = {}) { /*...*/ }
const merged = { ...defaults, ...overrides };
默认参数避免 undefined 判断;Rest/Spread 覆盖数组和对象(后者在 ES2018 标准化)。
fetch('/api/items')
.then(res => res.json())
.then(render)
.catch(handleError);
引入原生 Promise,统一异步流程控制,为 async/await 打下基础。
function* idMaker() {
let id = 0;
while (true) yield id++;
}
for (const id of idMaker()) {
if (id > 3) break;
console.log(id);
}
提供可暂停函数和统一迭代协议,开启更复杂的控制流与数据生成模式。
const cache = new Map();
const proxy = new Proxy(target, {
get(obj, prop) {
console.log(prop);
return obj[prop];
}
});
引入多种集合、唯一符号以及 Reflect/Proxy 元编程 API,使数据结构与拦截机制更强大。
🧠 三、总结 类型 代表特性 影响 作用域与绑定 let/const、解构 提升可维护性,避免常见 bug 函数与控制流 箭头函数、生成器、Promise 异步模式与函数式写法焕然一新 模块化 ES Modules 构建现代打包与代码组织的核心 语法糖 模板字面量、默认参数、Rest/Spread 减少模板拼接与参数判空样板 数据结构与元编程 Map/Set、Symbol、Proxy、Reflect 原生支持更丰富的结构与拦截
📌 整体意义: ECMAScript 2015 奠定了现代 JS 栈的语法基石,从工程化、模块化到异步流程全面升级。 此后 JavaScript 社区的框架、工具链乃至语言教育都以 ES6+ 为默认前提。