跳到主要内容

ES6新特性

ES6(也叫 ES2015)是 JavaScript 的一次重大升级,引入了很多新特性。


块级作用域

js
let a = 10;   // 块级作用域变量
const b = 20; // 常量,不能重新赋值

if (true) {
let c = 30;
console.log(c); // 30
}
// console.log(c); // 报错,c 只在块内有效

模板字符串

js
let name = "Tom";
let msg = `你好, ${name}!`; // 可以换行、插变量
console.log(msg);

解构赋值

js
let [x, y] = [1, 2]; 
let {name, age} = {name: "Alice", age: 20};

扩展运算符(...)

js
let arr1 = [1, 2];
let arr2 = [...arr1, 3, 4]; // 数组合并

let obj1 = {a: 1, b: 2};
let obj2 = {...obj1, c: 3}; // 对象合并

默认参数

js
function greet(name = "游客") {
console.log("你好," + name);
}

箭头函数

js
const add = (a, b) => a + b;

// this 继承外层作用域
let obj = {
name: "Tom",
say: () => console.log(this.name) // undefined
};

增强的对象字面量

js
let x = 1;
let y = 2;
let obj = {
x, // 等价于 x: x
y,
greet() { console.log("hi"); } // 简写方法
};

for...of 循环

js
let arr = [10, 20, 30];
for (let v of arr) {
console.log(v);
}

Promise

js
let p = new Promise((resolve, reject) => {
setTimeout(() => resolve("完成"), 1000);
});
p.then(res => console.log(res));

class 与继承

js
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(this.name + " 叫");
}
}

class Dog extends Animal {
speak() {
console.log(this.name + " 汪汪");
}
}

模块化 (import / export)

js
// 导出
export const pi = 3.14;
export default function add(a, b) { return a + b; }

// 导入
import add, { pi } from "./math.js";

其他特性

  • Symbol:新的原始数据类型,用于唯一标识
  • Set / Map:新的集合数据结构
  • 迭代器 / 生成器 (function* / yield)
  • 模块化支持(浏览器原生 ES modules)