ES15 即 ECMAScript 2015,也称为 ES6,是 JavaScript 语言的一次重大更新,引入了许多新特性,极大地提升了代码的可读性、简洁性和功能表现力。以下是 ES15 的一些核心特性:

1. 变量声明:letconst

  • 替代 var,解决了变量提升和作用域问题。
  • let 声明可变变量,const 声明不可变常量(块级作用域)。
if (true) {let x = 10;       // 块级作用域,外部无法访问const y = 20;     // 常量,不能重新赋值
}
console.log(x);     // 报错:x is not defined

2. 箭头函数(Arrow Functions)

  • 简化函数语法,且不绑定自己的 this(继承外部作用域的 this)。
// 传统函数
const add = function(a, b) {return a + b;
};// 箭头函数
const add = (a, b) => a + b;// 带函数体的箭头函数
const greet = (name) => {console.log(`Hello, ${name}!`);
};

3. 模板字符串(Template Strings)

  • 用反引号()包裹,支持多行字符串和变量插值(${}`)。
const name = "Alice";
const age = 30;
const message = `Name: ${name}, Age: ${age}
This is a multi-line string.`;

4. 解构赋值(Destructuring)

  • 从数组或对象中提取值,简化变量赋值。
// 数组解构
const [a, b, ...rest] = [1, 2, 3, 4]; // a=1, b=2, rest=[3,4]// 对象解构
const { name, age } = { name: "Bob", age: 25 };// 函数参数解构
const printUser = ({ name, age }) => console.log(name, age);

5. 默认参数(Default Parameters)

  • 为函数参数设置默认值。
const greet = (name = "Guest") => {console.log(`Hello, ${name}!`);
};
greet(); // 输出:Hello, Guest!

6. 扩展运算符(Spread Operator)

  • ... 表示,用于展开数组或对象。
// 数组展开
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4]; // [1,2,3,4]// 对象展开(浅拷贝)
const obj1 = { a: 1 };
const obj2 = { ...obj1, b: 2 }; // {a:1, b:2}

7. 类(Classes)

  • 引入面向对象的类语法(语法糖,本质还是原型继承)。
class Person {constructor(name) {this.name = name;}greet() {console.log(`Hello, ${this.name}`);}
}class Student extends Person {constructor(name, grade) {super(name); // 调用父类构造函数this.grade = grade;}
}

8. 模块(Modules)

  • 支持 importexport 关键字,实现代码模块化。
// math.js
export const add = (a, b) => a + b;// app.js
import { add } from './math.js';
console.log(add(2, 3)); // 5

9. Promise

  • 解决异步编程的回调地狱问题,用于处理异步操作。
const fetchData = () => {return new Promise((resolve, reject) => {setTimeout(() => {resolve("Data fetched");}, 1000);});
};fetchData().then(data => console.log(data));

10. 其他重要特性

  • for...of 循环:遍历可迭代对象(数组、字符串等)。
for (const num of [1, 2, 3]) {console.log(num);
}
  • Set 和 Map:新的数据结构(Set 存储唯一值,Map 存储键值对)。
  • 对象简写:属性和方法的简洁写法。
const name = "Tom";
const user = { name, greet() { console.log(name); } };

ES15 的这些特性奠定了现代 JavaScript 开发的基础,目前已被所有主流浏览器支持,是前端开发者必须掌握的核心知识。