八、ES6常用的语法

212 阅读4分钟

八、 ES6常用的语法

1、箭头函数:

=> 定义函数,简化了函数的写法,并且没有自己的 this,会捕获所在上下文的 this注意事项: 是箭头函数不能用作构造函数,也不能使用 arguments 对象。

2、解构赋值:

通过模式匹配的方式从数组或者对象中提取值并赋给变量。 注意事项: 解构失败时变量的默认值设置和深层解构的使用。

3、模板字符串:

使用反引号包裹的字符串,可以包含变量和表达式。 注意事项: 可以在模板字符串中使用多行文本和标签模板。

4、let 和 const 声明

let 声明的变量可以在同一作用域重新赋值,而 const 声明的变量不能重新赋值。 注意事项: 暂时性死区

5、默认参数、剩余参数和展开运算符

默认参数可以让函数在没有传入参数或传入undefined时,使用预设的默认值。剩余参数可以让函数接收任意数量的参数,并将它们存储在一个数组中。展开运算符可以将一个数组或对象展开为多个元素或属性,用于函数调用、数组合并、对象复制等场景。

6、类和继承

ES6提供了一种新的语法,可以让JavaScript支持类和继承这两个面向对象编程的重要概念。类是一种定义对象属性和方法的模板,可以通过 new 关键字创建类的实例。继承是一种让子类拥有父类属性和方法的机制,可以通过 extends 和 super 关键字实现。


class Person {
    constructor(name,age) {
        this.name = name; // this 指向实例对象
        this.age = age;
    }

let alice = new Person("Alice", 18);

继承( 子类可以重写或新增父类的方法 )

class Student extends Person {
    constructor(name, age, grade) {
        super(name, age); // 使用 super 关键字调用父类的构造函数(必须在子类构造函数中第一行执行)
        this.grade = grade; // 子类可以新增自己的属性
    }

7、Promise和async/await

Promise是一种用于处理异步操作的对象,它表示一个未来可能完成或失败的事件。Promise有三种状态:pending(等待)、fulfilled(成功)、rejected(失败)。Promise可以通过 then 方法添加成功或失败时执行的回调函数,也可以通过 catch 方法添加失败时执行的回调函数。Promise还可以通过 all 和 race 方法组合多个Promise对象。

// 创建一个Promise对象:使用 new 关键字,并且传入一个执行器函数(该函数接收两个参数:resolve和reject)
let promise = new Promise((resolve,reject) => {
    setTimeout(() => { // 模拟一个异步操作
        let num = Math.random(); // 随机生成一个0到1之间的数
        if (num > 0.5) { 
            resolve(num); // 如果大于0.5,则表示成功,调用resolve并传入结果
        } else {
            reject(num); // 如果小于等于0.5,则表示失败,调用reject并传入结果
        }
    },1000);
});

async/await是一种基于Promise的新语法,可以让异步操作更加简洁和清晰。async是一个修饰符,用于声明一个异步函数,该函数返回一个Promise对象。await是一个运算符,用于等待一个Promise对象的结果,只能在异步函数中使用。

// 使用 async/await 语法简化异步操作(需要在函数前加上 async 关键字,并且在等待的地方加上 await 关键字)
async function test() { 
    try {
        let value = await promise; // 等待promise对象的结果(如果成功,赋值给value;如果失败,抛出异常)
        console.log(`Success: ${value}`); // 如果成功,打印结果
    } catch (error) {
        console.log(`Fail: ${error}`); // 如果失败,打印错误
    }
}

8、模块化

模块化是一种将代码分割为不同的文件或模块的方法。ES6有模块化语法,可以让JavaScript支持导入和导出模块。导入模块使用 import 关键字,导出模块使用 export 关键字。

// 创建一个名为 math.js 的模块文件,并且导出两个函数:add 和 multiply
export function add(x,y) {
    return x + y;
}

export function multiply(x,y) {
    return x * y;
}
// 在另一个文件中,使用 import 关键字导入 math.js 模块,并且使用它们
import {add,multiply} from "./math.js"; // 导入指定的函数(需要使用花括号)
console.log(add(1,2)); // 3
console.log(multiply(2,3)); // 6

注意事项: as添加别名。defalut默认导出

9、Map和Set

Map里面可以用任意值作为键值对,Set里面的元素具有唯一性。map可以用set添加,set用add添加,都可以用has判断是否存在,get获取值,clear清空,size获取长度,delete删除。都可以用for...of遍历

let map = new Map([["name","Alice"],["age",18]]);

map.set("gender","female");

console.log(map.get("name")); // Alice

console.log(map.size); // 4

let set = new Set([1,2,3]);
let aaa = new Set([0,2,3,4,4,8])
console.log(aaa)//Set(5) { 0, 2, 3, 4, 8 }

10、迭代器和生成器(待补充)