ES6中 扩展运算符...以及rest和arguments

一、扩展运算符...

扩展运算符用于取出参对象的所有可遍历属性,然后拷贝到当前对象之中(深层拷贝)

   //扩展运算符 ...
        var arr = [1, 2, 3];
        var arr2 = arr;//浅层拷贝 指向同一地址
        var arr3 = [...arr];//互不影响

如代码所示,arr2=arr为浅层拷贝,当更改arr的值,arr2也会跟着改变,arr3用...赋值的时候相当于重新分配了一个地址给arr3,所以当更改arr的时候,arr3不会改变。

  (1)利用...运算符将已经有的数组快速赋值给新数组,如arr3

(2)...运算符可以把类数组转换为数组,然后才可以用数组里边的方法,例如pop,push

(3)...运算符可以实现两个数组的合并,例如如下代码

        var arr4 = [1, 2, 3];
        var arr5 = [4, 5, 6];
        var arr6 = [...arr4, ...arr5];//合并数组 也可以为数组的一部分

arr6的值应为[1,2,3,4,5,6]

(4)对象的合并:合并两个对象的时候,如果两个对象没有相同的属性时,新对象会包含两个对象的全部属性;如果两个对象有相同的属性的时候,后边的对象属性会覆盖掉前边对象的同名属性。例如如下代码

        let obj={
            name:'lisi',
            data:'12.05'              
           };
        let obj1={
            name:'sv',
            age:12
        }
        let obj3={...obj,...obj1};

obj3应该的属性以及值应该为age: 12,data: "12.05",name: "sv"

二、rest以及arguments

1.rest

给函数传参的时候,rest用来取到除指定参数以外剩余的参数

function fn(a,b,...rest){
   console.log(rest);
}
fn(1,2,3,4,5);

调用fn函数的时候,传入1,2,3,4,5分别赋值给形参a=1,b=2剩余参数以数组的方式赋值给rest,即rest=[3,4,5],当仅仅剩余一个数值赋值给rest的时候,rest仍然为一个数组,当没有数值赋值给rest的时候,rest为一个空数组。

2.arguments

arguments与rest的用法相似,不同的是arguments指的是传入的全部数值

function fn(a,b,...rest){
   console.log(arguments);
}
fn(1,2);

arguments的同样是一个数组,代码段输出应该为[1,2],没有参数传入的话,arguments时一个空数组

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值