es6解构(模式匹配)

解构(模式匹配)

数组解构:

  1. 等号左边的变量放到中括号内部,匹配右侧数组中得元素

    // 数组的不完全解构
    // let [a,b] = [1,2,3];
    // console.log(a,b);        //1,2
       let [a,b,c] = [1,[2,3],4]
       console.log(a,b,c);           //1 [ 2, 3 ] 4
    
    // 拓展运算符 ...
    // ...用在=左边,有聚合的作用,生成新的对象或者数组
    // ...用在=右边,有拆分、剥离的作用
       let [a,...b] = [1,2,3]
       console.log(a,b);       //1 [ 2, 3 ]
    
    // 数组解构设置默认值,默认值也可以为一个函数
       let [a,b,c=10] = [1,2]
       console.log(a,b,c);       //1 2 10
    // function myFun(){
    //     console.log('函数');
    // }
    // let [a,b,c = myFun()] = [1,2]
    // console.log(a,b,c);         //函数  1 2 undefined
    

对象解构

  1. 等号左边的变量放到大括号内部,匹配右侧数组中的元素。对象的属性没有次序,变量必须与属性同名,才能取到正确的值

       // 对象解构,使用对象的简写形式,(省略key,保留value对应的变量)
       let {name:username,age:userage} = {name:'张三',age:12}
       console.log(username,userage);   //张三 12
    
       // 嵌套解构
       let obj = {p:['Hello',{y:'World'}]}
       let {p:[a,{y:b}]} = obj
       console.log(a+b);   //HelloWorld
    
       // 默认值(默认值生效的条件是,对象的属性值严格等于undefined)
       let {name,age,gender='male'} = {name:'张三',age:12}
       console.log(name,age,gender);   //张三 12 male
    
       // 拓展运算符完成对象的深克隆
       let obj1 = {a:1,b:2,c:3}
       let {...b} = obj1
       console.log(b);         //{ a: 1, b: 2, c: 3 }    
       console.log(b === obj1);  //false
    

字符串解构

  1. 等号左边的变量如果放在中括号内进行的类似于数组解构,从字符串中获取指定字符;如果放在大括号内进行的类似于对象解构,从实例属性获方法中解构。
   // 字符串既可以使用[]解构,也可以使用{}解构
   // 使用[]解构字符串内部的字符
   // 使用{}解构字符串原型中的方法和属性
   let [a, b, c, d, e] = 'hello'
   console.log(a, b, c, d, e);    //h e l l o

   let { length, toString } = 'hello'
   console.log(length, toString);    //5 [Function: toString]

   // 字符串转数组(数组解构、拓展运算符)
   let [...arr] = 'hello'
   console.log(arr);     //[ 'h', 'e', 'l', 'l', 'o' ]

数值解构

  1. 等号左边的变量放在大括号中进行解构,可以获取到数值包装器构造函数原型中指定的方法。
//数字和Boolean只能使用{}解构其原型对象中的方法和属性
// 而不能使用[]解构,因为他们都是不可迭代的

// let [a,b] = 10;
// console.log(a,b);     //TypeError: 10 is not iterable

let {valueOf} = 12;
console.log(valueOf);         //[Function: valueOf]

布尔类型解构

  1. 等号左边的变量放在大括号中进行解构,可以获取到布尔包装器构造函数原型中指定的方法。
    let [c] = true;          //TypeError: true is not iterable
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值