宇阳 一直对网站开发领域很感兴趣,从小就希望有一个属于自己的网站,在17年时候成功进入站长圈,并通过各种自学,以及各种折腾,才有了你现在看到的这个网站
歌曲封面 未知作品

网站已运行 5 年 91 天 3 小时 25 分

Powered by Typecho & Sunny

2 online · 54 ms

Title

JavaScript解构赋值

宇阳

·

Article
⚠️ 本文最后更新于2023年04月01日,已经过了383天没有更新,若内容或图片失效,请留言反馈

JavaScript解构赋值

首先我们需要了解一下为什么需要学习结构赋值

先给大家对比一下传统写法与结构赋值写法定义多个变量

数组解构赋值

传统写法:

♾️ javascript 代码:
        let x = 10, y = 20, z = 30;    

        //或者
        let x = 10
        let y = 20
        let z = 30

结构赋值的写法:

♾️ JavaScript 代码:
            let [x, y, z] = [10, 20, 30];
            console.log(x) //10
            console.log(y) //20
            console.log(z) //30    

由此可以看出结构赋值写法更加简单方便一些。左边是变量,右边是值。只需要把右边的值赋值给左边就可以了。

结构赋值不仅仅可以定义变量,他可以定义任何数据类型

♾️ JavaScript 代码:
            let [x,y,z] = [1,[2,3,4,5],{a:1,b:2,c:3}];
            console.log(x); //1
            console.log(y[1]); //3
            console.log(z.b); //2

结构赋值还有一个很常用的实用机巧:交换两个变量的值

♾️ JavaScript 代码:
            let [x,y] = [10,20];
            [y,x] = [x,y];
            console.log(x,y); //20 10

正常return只能返回一个值,但是利用解构赋值也可以实现函数return多个返回值。

♾️ javascript 代码:
        function show() {
            return ["结果1", "结果2", "结果3"];
        }

        let [a, b, c] = show();
        console.log(a, b, c) //结果1 结果2 结果3

需要注意的是数组解构赋值顺序必须保持一致

对象解构赋值

还有一种对象解构赋值的方法

♾️ JavaScript 代码:
        let { uname, sex, age } = { sex: '男', uname: '刘宇阳', age: 19 };
        console.log(uname,sex,age); //刘宇阳 男 19

需要注意的是:对象解构赋值右边的是以键值对形式。并且对象解构赋值可以不用像数组解构那样按照顺序赋值。对象解构是以右边的对象名键与左边的变量名进行匹配然后赋值的。

♾️ javascript 代码:
        function show({ uname, age, sex }) {
            console.log("我叫" + uname + ",今年" + age + ",是一个" + sex + "孩");
        }
        show({
            age: 19,
            uname: "刘宇阳",
            sex: "男"
        })
        // 我叫刘宇阳,今年19,是一个男孩

对象取别名

默认情况下左边的值是uname:uname,因为两个名字是一样的所以就可以省略为一个uname。

♾️ JavaScript 代码:
        let { uname:uname, sex:sex, age:age } = { sex: '男', uname: '刘宇阳', age: 19 };
        console.log(uname,sex,age); //刘宇阳 男 19

他的作用就是右边的对象先找到左边的对象键名进行匹配然后再将他的值赋值给他。

♾️ javascript 代码:
        uname:uname = uname:'刘宇阳';
Snipaste_2022-03-19_20-02-45.png

此时也可以给他取个别名

♾️ JavaScript 代码:
        let { uname:a, sex:sex, age:age } = { sex: '男', uname: '刘宇阳', age: 19 };
        console.log(uname,sex,age); //报错,因为我们把赋值的那个变量名字改成了a,所以没有找到uname这个变量

报错,因为我们把赋值的那个变量名字改成了a,所以没有找到uname这个变量

正确取别名

♾️ javascript 代码:
        let { uname:a, sex:sex, age:age } = { sex: '男', uname: '刘宇阳', age: 19 };
        console.log(a,sex,age); //刘宇阳 男 19

默认值

数值默认值

♾️ JavaScript 代码:
        //右边如果有值就赋值
        let [a, b, c] = [10, 20, 30];
        console.log(a, b, c); //10 20 30

        //右边没有值就以默认值为准
        let [aa = 1, bb = 1, cc = 1] = [];
        console.log(aa, bb, cc); //1 1 1

对象默认值

♾️ JavaScript 代码:
        //右边有值就赋值
        let { a = 1, b = 2, c = 3 } = { a: 100, b: 200, c: 300 };
        console.log(a, b, c); // 100 200 300

        //右边没有值就以默认值为准
        let { aa = 1, bb = 2, cc = 3 } = {};
        console.log(aa, bb, cc); // 1 2 3

需要注意的是不管数组还是对象给他们默认值必须以等号进行赋值

现在已有 1 条评论,1 人点赞
Comment
发表
  1. 头像
    @
    kk
    太谢谢作者大大了,一看就会
    · Windows · Chrome · 中国江苏省宿迁市电信

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主