十九、前端基础之解构赋值

 let person = {

            name:'香川',

            age:22,

            // hobby:'旅行'

        }

        // 对象解构(变量名在后面而不是前面)和顺序无关系

        let {name,age,hobby} = person

        // let {name:name,age:age,hobby} = person

        let {name:name1,age:age1,hobby1} = person

        console.log(name,age,hobby); //香川 22 undefined

        console.log(name1,age1,hobby1); //香川 22 undefined

        // 数组解构 和顺序有关系

        let [a,c,b] = [1,2,3]

        console.log(a,b,c); //  1 3 2

        // 对象解构的默认值,默认值想生效:对象与之对应的属性值一定要是undefined

        let people={

            name:'香川',

            age:22,

            // hobby:undefined

            hobby:null

        }

        let {name:name2,hobby2="旅行",age:age2} = people

        console.log(name2,age2,hobby2); //香川 22 undefined

        // 默认值例子1

        var {x=3} = {}

        console.log(x); //3

        // 默认值例子2

        var {x,y=5}={x:1}

        console.log(x,y); //1 5

        // 默认值例子3

        var {x:y=5}={}

        console.log(y); //5

        // 默认值例子4

        var {x:y=5}={x:undefined}

        console.log(y); //5

        // 默认值例子5

        var {x:y=5}={x:null}

        console.log(y); //null

        // 默认值例子6

        var {x:y=3}={x:5}

        console.log(y); //5

        // 默认值例子7

        var {x:y=3}={x:undefined}

        console.log(y); //3

        // 默认值例子

        var {x=3}={x:null}

        console.log(x); //null


 

        // 字符串解构

        var {message:msg='thank you'}={}

        console.log(msg); // thank you


 

        // 语法错误:如果要将一个已经声明的变量用于解构赋值,一定要小心

        let t

        // {}出现在行首会被认为是代码块,要解决该问题则加个括号包起来

        // {t} = {t:1}

        ({ t } = { t:1 })

        console.log(t);

        // 盲区 不会报错

        // 允许等号左边不写任何变量名

        ({} = [true,false]);

        // 盲区 上一行不加;会报错 (默认会加上分号,但是如果觉得上一行和下一行能结合一起解析就不会加分号)

        ({} = '123');

        ({} = [])

        // 数组的本质是对象 对数组进行对象属性的解构

        let arr = [1,2,3]

        let {0:first,[arr.length-1]:last} = arr

        console.log(first,last);

        let p = {

            personInfo:{

                basicInfo:{

                    name:'香川',

                    age:20

                }

            }

        }

        // 嵌套解构

        let { personInfo:{basicInfo} } = p

        console.log(basicInfo);

        // 解构的实际应用,函数返回值

        function example(){

            // return [1,2,3]

            return {

                name:'香川',

                age:22

            }

        }

        // let [a1,b1,c1] = example()

        let {name3,age3}=example()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值