`后续添加${}`
解构赋值
扩展运算符
js // 函数参数传递
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers)); // 输出:6
// 字符串转数组
const title = "china";
const charts = [...title];
console.log(charts); // 输出:['c', 'h', 'i', 'n', 'a']
// 数组去重(结合 Set)
const arrayNumbers = [1, 5, 9, 3, 5, 7, 10, 4, 5, 2, 5];
const newNumbers = [...new Set(arrayNumbers)];
console.log(newNumbers); // 输出:[1, 5, 9, 3, 7, 10, 4, 2]
ES6 中的剩余参数语法允许将不定数量的参数表示为一个数组。
其语法形式为:在函数的最后一个命名参数前加上三个点(...),后面跟着参数名,例如:function(a, b,...theArgs){ // 函数体 } ,在这个例子中,theArgs 将收集该函数的第三个参数及以后的所有剩余参数。
ES6 引入了模块化的概念,这使得 JavaScript 代码的组织和管理更加清晰和高效。
一个模块就是一个独立的 JavaScript 文件。模块内的变量、函数、类等默认是私有的,只有通过 export 关键字导出的部分才能被其他模块使用。
这个函数又接收两个参数 resolve 和 reject,分别对映成功回调和失败回调
Promise 内部有 3 种状态 pending(进行时),fulfilled(已成功),rejected(已失败)。且这三种状态是不可逆的
为了更好的控制下一步执行,又诞生了三个实例方法 then(支持链式调用)、catch、finally(无论成功还是失败都需要执行一些操作)。
为了满足更多的业务需要,又诞生了 6 个原型方法 Promise.all()、Promise.allSettled()、Promise.any()、Promise.race()、Promise.reject()、Promise.resolve()。且都会返回一个确定状态的 Promsie 对象。Promise.all() 通过数组的形式传入异步操作,所有的异步执行都成功,才执行成功,如果有一个失败了,就执行失败
Promise.allSettled() 所有执行都有结果了就执行,无论成功还是失败
Promise.any() 任意异步成功了就执行
Promise.race() 任意异步成功或失败就执行。
在 ES6 中,Map 和 Set 是两种新的数据结构,它们为数据的存储和操作提供了更强大和灵活的方式。 * Map:Map 是键值对的集合,其中键可以是任何类型的值(包括对象),而不仅仅是字符串。 * Set:Set 是一种不允许重复值的数据结构。
在 ES6 中,Symbol 是一种新的基本数据类型,它的主要目的是创建独一无二的值,通常用于对象的属性名,以避免属性名冲突。
在 ES6 中,迭代器(Iterator)和生成器(Generator)为处理数据的遍历和生成提供了更强大和灵活的方式。
迭代器是一个具有 next() 方法的对象,每次调用 next() 方法都会返回一个对象,该对象包含两个属性:value (当前迭代的值)和 done (一个布尔值,表示迭代是否完成)。
js// 创建一个简单的迭代器
function createIterator(arr) {
let index = 0;
return {
next() {
if (index < arr.length) {
return { value: arr[index++], done: false };
} else {
return { value: undefined, done: true };
}
},
};
}
生成器是通过 function* 定义的函数,可以通过 yield 表达式暂停和恢复执行,并且可以逐步生成一系列的值。
jsfunction* generateNumbers() {
yield 1;
yield 2;
yield 3;
}
let generator = generateNumbers();
console.log(generator.next());
console.log(generator.next());
console.log(generator.next());
console.log(generator.next());
本文作者:seek
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!