目录
1. 声明变量: let 和 const(无变量提升,块级作用域,不可重复声明)
2. 箭头函数
3. 模板字符串`,${}
4. 解构赋值
5. 默认参数
6. 展开运算符
7. 类和继承
8. Promise 对象
1. 声明变量: let 和 const(无变量提升,块级作用域,不可重复声明)
let 声明的变量可以被修改;const 声明的变量是常量,不可被修改。
let x = 10;
const PI = 3.14;
2. 箭头函数
更简洁,绑定了词法作用域的 this 值。不会创建自己的 this,而是继承了上下文中的 this , this 始终指向定义时所在的作用域。
// 传统函数定义
function add(a, b) {return a + b;
}// 箭头函数定义
const add = (a, b) => a + b;// 词法作用域绑定
function Person() {this.age = 0;setInterval(() => {this.age++; // this 指向 Person 对象}, 1000);
}// 隐式返回,可省略 return 关键字
const add = (a, b) => a + b;// 适用于回调函数
const arr = [1, 2, 3];
const doubled = arr.map(num => num * 2);
3. 模板字符串`,${}
使用反引号 \` 和 ${} 来插入变量或表达式,使字符串拼接更简洁。
const name = 'Alice';
console.log(`Hello, ${name}!`);
4. 解构赋值
允许按照一定模式从数组或对象中提取值,然后赋值给变量。
const [x, y] = [1, 2];
const {name, age} = {name: 'Alice', age: 30};
5. 默认参数
函数参数可以指定默认值,当调用函数时没有传入对应参数时,使用默认值。
function greet(name = 'World') {console.log(`Hello, ${name}!`);
}
6. 展开运算符
展开运算符(`...`)可以将数组或对象展开为独立的元素,或者将多个参数合并为数组。
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
const obj1 = {a: 1, b: 2};
const obj2 = {...obj1, c: 3};
7. 类和继承
ES6 引入了类(class)和继承的语法糖,更易于面向对象编程。
class Animal {constructor(name) {this.name = name;}speak() {console.log(`${this.name} makes a noise.`);}
}class Dog extends Animal {constructor(name) {super(name);}speak() {console.log(`${this.name} barks.`);}
}const dog = new Dog('Spot');
dog.speak(); // Spot barks.
8. Promise 对象
Promise 是一种用于异步编程的对象,用于表示一个异步操作的最终完成或失败及其结果值。
Promise 对象的特点:
-
状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。状态一旦改变,就不会再变,从 pending 到 fulfilled 或者从 pending 到 rejected。
-
状态转换:只能由 pending 转换为 fulfilled 或者 rejected,并且一旦状态确定就不可再改变。
-
结果值:状态变为 fulfilled 时,会传递一个结果值;状态变为 rejected 时,会传递一个拒绝原因(错误信息)。
const promise = new Promise((resolve, reject) => {// 执行异步操作setTimeout(() => {// 异步操作成功,调用 resolve 并传递结果值resolve('Success!');// 异步操作失败,调用 reject 并传递拒绝原因// reject('Error!');}, 1000);
});promise.then(// 成功时执行的回调函数result => {console.log(result); // 'Success!'},// 失败时执行的回调函数error => {console.error(error); // 'Error!'}
);