必须要懂的JS之(rest参数与spread语法)

    科技2022-08-10  112

    rest参数与spread语法

    rest参数指的是这样的结构:

    function sumAll(...args) { // 数组名为 args let sum = 0; for (let arg of args) sum += arg; return sum; } alert( sumAll(1) ); // 1 alert( sumAll(1, 2) ); // 3 alert( sumAll(1, 2, 3) ); // 6

    以上的…args传参的方式就是rest参数,这种形式的传参可以解决不固定参数的情况,而且值得注意的是,传入的不固定数量的参数是可以进行循环解构的! 在没有rest之前我们可以利用arguments来获取传入的参数,但是arguments并非是一个数组,所以关于数组的方法比如map就不适用,注意的一点就是rest参数需要放在末尾。 spread语法:

    let arr = [3, 5, 1]; alert( Math.max(...arr) ); // 5(spread 语法把数组转换为参数列表)

    以上结构属于spread语法,展示了一个返回数组中最大值的操作,…arr将数组中的值进行结构并导入Math.max方法中。 这种语法需要注意的点有以下几种; 一、

    let arr1 = [1, -2, 3, 4]; let arr2 = [8, 3, -8, 1]; alert( Math.max(...arr1, ...arr2) ); // 8

    我们可以对多个数组进行解构。 二、

    let arr = [3, 5, 1]; let arr2 = [8, 9, 15]; let merged = [0, ...arr, 2, ...arr2]; alert(merged); // 0,3,5,1,2,8,9,15(0,然后是 arr,然后是 2,然后是 arr2)

    可以对数组进行合并。 三、

    let str = "Hello"; alert( [...str] ); // H,e,l,l,

    对于字符串依然可以使用。 四、

    let arr = [1, 2, 3]; let arrCopy = [...arr]; // 将数组 spread 到参数列表中 // 然后将结果放到一个新数组 // 两个数组中的内容相同吗? alert(JSON.stringify(arr) === JSON.stringify(arrCopy)); // true // 两个数组相等吗? alert(arr === arrCopy); // false(它们的引用是不同的) // 修改我们初始的数组不会修改副本: arr.push(4); alert(arr); // 1, 2, 3, 4 alert(arrCopy); // 1, 2, 3

    对数组进行深拷贝

    Processed: 0.013, SQL: 8