ES6(ECMAScript 2015)为 JavaScript 带来了大量改进,以下是核心特性概览:

1. 变量声明:letconst 🔄

  • 块级作用域letconst 提供块级作用域,替代 var 的函数作用域
  • 常量声明const 声明不可重新赋值的常量(如 const PI = 3.14
  • 示例
    if (true) {
      let x = 10; // 只在 if 块内有效
      const y = 20; // 不可修改
    }
    

2. 箭头函数 📈

  • 简洁语法:省略 function 关键字,使用 => 定义函数
  • 词法作用域:箭头函数继承 this 词法环境
  • 示例
    const square = num => num * num;
    

3. 类(Class)语法 🏗️

  • 面向对象:使用 class 定义构造函数和方法
  • 继承:通过 extends 实现继承
  • 示例
    class Animal {
      constructor(name) {
        this.name = name;
      }
    }
    

4. 模块化开发 📁

  • 导入导出:使用 importexport 管理模块
  • ES6 模块:支持静态导入和动态导入
  • 示例
    import { add, subtract } from './math.js';
    

5. 解构赋值 🧩

  • 数组解构const [a, b] = [1, 2];
  • 对象解构const { name, age } = person;
  • 参数解构:函数参数可直接解构

6. 模板字符串 📝

  • 多行字符串:使用反引号(`)包裹
  • 变量嵌入${expression} 插入动态内容
  • 示例
    const name = "Alice";
    console.log(`Hello, ${name}!`);
    

7. Promise 与异步处理 ⏳

  • 异步流程:使用 Promise 管理异步操作
  • 链式调用.then().catch() 处理成功/失败状态
  • 示例
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .catch(error => console.error(error));
    

8. 新增数据类型 📦

  • Symbol:创建唯一标识符
  • Map/WeakMap:键值对集合(支持非对象键)
  • Set/WeakSet:唯一值集合

9. 可选参数与默认值 📌

  • 参数默认值function foo(a = 1, b = 2) { ... }
  • 可选参数:使用 = 设置默认值

10. 展展运算符(Spread/Rest) 📈

  • 展开数组const arr = [...array1, ...array2]
  • rest 参数function sum(...numbers) { ... }
es6_features

进一步学习

互动练习

  1. 尝试使用 letconst 重构原有代码
  2. 实践箭头函数在数组方法中的应用(如 .map()
  3. 创建一个简单的 ES6 模块并导入使用
es6_tutorial