ES6学习笔记03——对象赋值

  1. 解构赋值
  let obj={
      n1:"p1",
      n2:"p2"
  };
  //变量名==属性名
  let {n1,n2}=obj;
  console.log(n1, n2);//p1 p2

  //变量名!=属性名
  let {n1:x1, n2:x2} = obj;
  console.log(x1, x2); //p1 p2
  1. 对象数组嵌套
    let obj={a1:[1,2,3],a2:"123"};
    //x=obj.a1[0];
    //y=obj.a1[2];
    let {a1:[x,y],a2}=obj;
    console.log(x, y);

    let obj={s:{n:'1'},n:[1,"2",3,"4"],m:[[1]]};
    let {m:[x1],s:{n},n:[,...m2]}=obj;
    console.log(x1, n, m2); //[1] "1" ["2", 3, "4"]
  1. 默认值
    //默认值生效的条件是对象的属性值必须是严格等于undefined
    let {x=1,y}={y:2}
    console.log(x);//1

    let {m:n=4}={m:12};
    console.log(n);//12

     let {m:n=4}={m:null};
    console.log(n);//null 

    //如果结构模式中嵌套的是对象,而且子对象所在的父属性不存在,就会报错
    let {f:{b}}={b:"bb"};
    console.log(b);//Uncaught TypeError: Cannot destructure property `b` of 'undefined' or 'null'.
  1. 附的值不是一个对象是其他数据类型的值,会默认将其他数据类型转为对象
    let {x, y, __proto__} = 1;
    console.log(x, y, __proto__);
    console.log(Object(1));
    console.log(Object([1, 2, 3]));
    let {length} = [1, 2, 3]
    console.log(length);//3
  1. 为了避免错误,不要将{}写在行首,会被理解为代码块
   let a;
   {a}={a:'a'};//js引擎会将{a}理解成一个代码块

   let a;
   ({a}={a:'a'});
   console.log(a); //a
  1. null 和 undefined 无法转为对象,所以对象结果赋值为一个null和undefined会报错
   let {p:xx}=undefined; //Uncaught TypeError: Cannot destructure property `p` of 'undefined' or 'null'.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值