欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6中的解构之对象解构赋值

程序员文章站 2022-07-02 09:46:36
...

解构赋值

解构赋值是javascript表达式,这使得可以将好数据从数组或对象提取到不同的变量中。(可以看出解构主要用在数组和对象上)。
简单点来讲就是解析等号两边的对应的赋值给左边,如果解构不成功,变量的赋值就等于undefined。

对象的解构与数组有一个重要的不同。数组的元素是按顺序排的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值

基本使用语法

注意:对象解构赋值的键名对应很重要。不然不会找到。因为对象时无序的,必须通过键名来识别

1.未先声明变量再进行对象解构赋值

    //对象的键名和键值一直时可以只写一个变量就行了
let {bar,foo} = {
        foo:'aaa',
        bar:'bbb'
    };
   // 等价于 let {bar:'bar',foo:'foo'}={bar:'bbb',foo:'aaa'}
    // foo   aaa
    // bar    bbb

2.先声明变量再进行对象解构赋值

let aa,bb;
    ({aa,bb} = {aa:123,bb:156})
    console.log(aa,bb) //123  156

注意:如果变量已经提前被声明了,在解构赋值的时候一定要用小括号()包住,不然会报错

3.对象的键名和键值不一致时

let {aa:a,bb:b} = {aa:123,bb:456}
    console.log(a,b)//123  456
    console.log(aa)// 报错 aa is not defined

这段代码中,对象的解构赋值是内部机制,是先找到同名属性,然后在赋值给对应的变量。
aa是匹配模式 a才是变量 真正被赋值的是a

4.有默认值的对象解构赋值

let { x = 3 } = {};
    console.log(x)//3
    let {x, y =3} = {x:1}
    console.log(x,y) //1 3
    let {x:y = 3} ={};
    console.log(y)//3
    let {x: y =3} ={x:5}
    console.log(x,y)// x not defined

默认值生效的条件是,对象的属性值严格等于undefined

对象解构赋值的使用场景–处理后端的json数据,取出自己想要的值

let  dataJson ={
        title:'aaa',
        name:'jack',
        test:[{
            title:'abc',
            desc:'对象的解构赋值'
        }]
    }
    //我们只需要取出需要的两个title值(注意结构和键名)
let {title:oneTitle,test:[{title:twoTitle}]} = dataJson;
//如果只需要其中一个数据,直接根据结构键名来写就好了
let { name } = dataJson;  //相当于es5的 let name = dataJson.name;
console.log(oneTitle,twoTitle); // abc  ggg
console.log(name); // jack