美文网首页
ES6的对象扩展运算符rest运算符(…)

ES6的对象扩展运算符rest运算符(…)

作者: 微志异 | 来源:发表于2019-04-02 15:27 被阅读0次

扩展运算符

扩展运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值。

let foo = (a, b, c) => {
    console.log(a);
    console.log(b);
    console.log(c);
};
let arr = [1, 2, 3];
// 传统写法
foo(arr[0], arr[1], arr[2]);
// 扩展运算符
foo(...arr);

特殊用法

// 数组深拷贝
let arr = [1, 2, 3];
let arr1 = arr;
let arr2 = [...arr];
console.log(arr1 === arr); // true,说明arr1和arr指向同一个数组
console.log(arr2 === arr); // false,说明arr2和arr指向不同数组
// 把一个数组插入另一个数组字面量
let arr = [1, 2, 3];
let arr2 = [...arr, 4, 5, 6];
console.log(arr2); // [1, 2, 3, 4, 5, 6]
// 字符串转数组
let str = 'hello';
let arr = [...str];
console.log(arr); // ["h", "e", "l", "l", "o"]

rest运算符

rest运算符也是三个点号,不过其功能与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组。

// 主要用于不定参数,所以ES6开始可以不再使用arguments对象
let fn = (...args) => {
    for (let item of args) {
        console.log(item);
    }
};
fn(1, 2, 3); 
// 1
// 2
// 3
let fn1 = (a, ...args) => {
    console.log(a);
    console.log(args);
}
fn1(1, 2, 3, 4);
// 1
// [2, 3, 4]

rest运算符配合解构使用

let  [a, ...rest] = [1, 2, 3, 4];
console.log(a); // 1
console.log(rest); // [2, 3, 4]

总结:同样是三个点。三点放在形参或者等号左边为rest运算符; 放在实参或者等号右边为spread运算符,或者说,放在被赋值一方为rest运算符,放在赋值一方为扩展运算符。

相关文章

网友评论

      本文标题:ES6的对象扩展运算符rest运算符(…)

      本文链接:https://www.haomeiwen.com/subject/sxlgbqtx.html