ES6扩展原运算符

145 阅读1分钟

作用

拷贝对象

	let obj = {a:1,b:2};
	let obj2 = {...obj};
	obj.a = 7;
	console.log(obj)//{a: 7, b: 2}
	console.log(obj2)//{a: 1, b: 2}

拷贝数组

	let arr = [1,2,3,4];
	let arr2 = [...arr];
	arr[0] = 10;
	console.log(arr)//[10, 2, 3, 4]
	console.log(arr2)//[1, 2, 3, 4]

合并对象

    let obj1 = { a: 1, b: 1};
    let obj2 = { c: 2, d: 2};
    let obj3 = {...obj1 , ...obj2};
    console.log(obj3)//{a: 1, b: 1, c: 2, d: 2}

自定义的属性在拓展运算符后面,则拓展运算符对象内部同名的属性将被覆盖掉。同理,自定义的属性在拓展运算度前面,则变成设置新对象默认属性值。

合并数组

	let arr = [1,2,3,4,5];
	let arr2 = [6,7,8,9];
	let arr3 = [...arr,...arr2];
	console.log(arr3)//[1, 2, 3, 4, 5, 6, 7, 8, 9]

展开数组

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

与解构赋值使用

    let [a,...b] = [1,2,3,4,5];
    a // 1
    b// [2,3,4,5]
    let [...b,a] = [1,2,3,4,5];
	console.log(b,a)
    //Rest element must be last element
    //Rest   元素必须是最后一个元素

在数组与扩展运算符一起使用时,如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。

配合函数传参

普通传参

    function show(a,b,c){
    	console.log(a,b,c);
    }
    show(1,2,3)

扩展符传参

    function show(...value){
    	console.log(value);//[1, 2, 3]
    }
    show(1,2,3)

本文章仅以自己防止忘记而记录,不管是我还是其他人,当你看到这篇文章的时候说明你还在从事前端工作,或者在学习前端,所以不管以后遇到什么问题,和挫折,都不要忘记你敲代码的初衷