ES6新特性-解构赋值

Spread / Rest 操作符

Spread / Rest 操作符 :Spread / Rest 操作符指的是 '...',具体是 Spread 还是 Rest 需要看上下文语境。

(1)当被用于迭代器中时,它是一个 Spread 操作符:迭代器 (Iterator)是按照一定的顺序对一个或多个容器中的元素行进遍历的一种机制。

spread运算符常常用于数组的解析与构造

function foo(x,y,z) {
              console.log(x,y,z);
            }
             
            let arr = [1,2,3];
            foo(...arr); // 1 2 3

(2)当被用于函数传参时,是一个 Rest 操作符:当被用于函数传参时,是一个 Rest 操作符:

function foo(...args) {
              console.log(args);
            }
            foo( 1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]

数组的解构

(1)在ES5标准中赋值多个变量采用的方法是:

	   var a = 10;
       var b = 20;
       var c = 30;

ES6提供了更简洁的解构赋值来实现上述变量的定义:

            let [a,b,c] = [10,20,30];
            console.log(a);
            console.log(b);
            console.log(c);

等号右边的值会按照顺序依次赋值给左边的变量。

(2)非一一对应关系的赋值

        let [a,b] = [10,20,30]
        console.log(a,b); //输出10,20

        let [a,b,c] = [10,20]
        console.log(a); //10
        console.log(b); //20
        console.log(c); //undefined

(3)也可以通过"…"把特定的元素放在变量里

        let [a,...arr] = [10,20,30]
        console.log(a); //10
        console.log(arr); //20,30

(4)在ES6中可以通过解构赋值来互换变量

        let a = 10;
        let b = 20;
        [a,b] = [b,a];
        console.log(a,b)

对象的解构

(1)对象解构的写法与数组解构类似

  let obj = {
            name: '张三',
            age: 20,
            height: '178com'
        }

        let { name,age,height } = obj; //变量的名称必须和对象的属性名相同
        console.log(name,age,height);

(2)也可以解构多层对象

let person = {
    name: '张三',
    age: 20,
    family: {
        father: '张武',
        mother: '李燕'
    }
}
let { name,age,family: {father,mother }} = person
console.log(name,father)

(3)在解构对象时也可以自定义变量名称:

   let obj = {
           name: '张三',
           ge: 20
      }
   let { name:myname,age:myage } = obj;
   console.log(myname,myage);

默认值和参数的解构

(1)不管是数组的解构赋值,还是对象的解构赋值都可以添加默认参数。

   let obj = {
       name: '李四',
       age: 20
    }

   let { name,age,height="178com" } = obj;
   console.log(height); //178com

(2)在函数参数中使用解构,参数解构也可以给默认参数

  function fun({name,age,height="178com"} = {}){
                console.log(name,age); //张三,20
            }
            let obj = {
                name: '张三',
                age: 20
            }
     fun(obj)
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力做一只合格的前端攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值