ES6(ECMAScript 2015)引入了一系列新的特性和语法,极大地增强了 JavaScript 的功能和可读性。以下是一些最重要的 ES6 新增内容:
1. 块级作用域
-
let
和const
:引入了新的变量声明方式。let
:块级作用域变量,不能重复声明。const
:块级作用域常量,声明后不能再赋值。
if (true) { let a = 10; const b = 20; } // console.log(a); // ReferenceError: a is not defined // console.log(b); // ReferenceError: b is not defined
2. 箭头函数
-
使用
=>
语法来定义函数,箭头函数不绑定自己的this
,使得上下文更为清晰。const add = (x, y) => x + y; console.log(add(5, 3)); // 8
3. 模板字符串
-
使用反引号(
`
)定义字符串,并支持多行和插值表达。const name = 'Alice'; const greeting = `Hello, ${name}!`; console.log(greeting); // Hello, Alice!
4. 解构赋值
-
允许从数组或对象中提取值并赋给变量。
const [x, y] = [1, 2]; const { name, age } = { name: 'Alice', age: 25 };
5. 默认参数
-
函数参数可以设置默认值。
function greet(name = 'Guest') { console.log(`Hello, ${name}!`); } greet(); // Hello, Guest!
6. 扩展运算符
-
使用
...
语法来展开数组或对象。const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const combined = [...arr1, ...arr2]; // [1, 2, 3, 4, 5, 6] const obj1 = { a: 1 }; const obj2 = { b: 2 }; const merged = { ...obj1, ...obj2 }; // { a: 1, b: 2 }
7. 类(Class)
-
JavaScript 引入了类的语法,提供更清晰的面向对象编程方式。
class Person { constructor(name) { this.name = name; } greet() { console.log(`Hello, ${this.name}!`); } } const john = new Person('John'); john.greet(); // Hello, John!
8. 模块化
-
ES6 引入了
import
和export
关键字,支持模块化开发。// module.js export const pi = 3.14; export function sum(a, b) { return a + b; } // main.js import { pi, sum } from './module.js'; console.log(pi); // 3.14
9. Promises
-
ES6 引入
Promise
对象,用于处理异步操作。const fetchData = () => { return new Promise((resolve, reject) => { // 模拟网络请求 setTimeout(() => resolve('Data fetched!'), 1000); }); }; fetchData().then(data => console.log(data)); // 1秒后输出 "Data fetched!"
10. Symbol
-
引入了一种新的原始数据类型,用于创建独一无二的值,常用作对象的键。
const mySymbol = Symbol('description'); const obj = { [mySymbol]: 'value' }; console.log(obj[mySymbol]); // value