ES6(二)解构赋值

本文详细介绍了ES6中的解构赋值,包括数组和对象的解构赋值,涵盖基本类型、可嵌套、可忽略、不完全解构、剩余运算符和默认值等常见类型,并通过实例进行验证,帮助读者深入掌握这一特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一、解构赋值

原理:(以数组为例)

语法:

举个栗子~

现在来验证一下结果~

 二、数组解构赋值的常见类型

 基本类型

可嵌套类型

可忽略类型

不完全解构

剩余运算符

解构默认值

三、对象解构

原理:

语法:

举个栗子~

结果验证      

 四、对象解构第二种写法

原理:

语法:

举个栗子~

 结果验证   

五、对象解构赋值的常见类型

基本类型

可嵌套类型

忽略类型

不完全解构类型

剩余运算符类型

解构默认值

结束语


前言

      在ES5(也就是我们之前所学的javascript基础)中,在数组取值的时候我们如果要取全部(n个)值,就相对应的要声明n个变量,看以下代码:
     

 {
            let array = [1,2,3];
            console.log(array[0]);
            console.log(array[1]);
            console.log(array[2]);    //声明三次变量才可以取出来
        }


这样看起来是不是很!麻!烦!?能不能一条语句解决呢?于是,ES6给我们带来了“解构赋值”

一、解构赋值

原理:(以数组为例)

      数组解构允许我们按照一一对应的关系从数组中提取值,赋值给变量

语法:

      let关键字+[   ]中括号:关键符号,代表解构,里面存放变量= 数组(也可以是数组名);

举个栗子~

let array = [1,2,3];  
    //一个数组
let [a,b,c] = array;
    //解构符号内声明三个变量,对应array数组中的三个值

 
要点注意!!一定要用let关键字!!

现在来验证一下结果~

 {
        let array = [1,2,3];  //一个数组
        let [a,b,c] = array;  //解构符号内声明三个变量,对应array数组中的三个值
        console.log(a);
        console.log(b);
        console.log(c);
        } 

 二、数组解构赋值的常见类型

 基本类型

     上面例子就是啦~

可嵌套类型

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

可忽略类型

      let [a, , b] = [1, 2, 3];
      // a = 1
      // b = 3

不完全解构

      let [a , b] = [1];
      // a = 1
      //b = undefined

剩余运算符

      let [a, ...b] = [1, 2, 3];
      //a = 1
      //b = [2, 3]

解构默认值

     let [a = 2] = [undefined]; 
      // a = 2 其中2为默认值,只有当解构模式有匹配结果,
      //且匹配结果是 undefined 时,才会触发默认值作为返回结果

三、对象解构

原理:

      对象解构允许我们使用变量名匹配对象的属性,匹配成功,将把对象属性值赋值给变量
      通俗理解:实际上就是对象的属性匹配,如果对象中的属性与解构符号中的
      变量名匹配,则将属性值赋值给变量,也是一一对应的关系

语法:

      let关键字+{变量名1}大括号:关键符号,代表解构,里面存放变量= {属性名1:属性值}(也可以是对象名);

举个栗子~

     

let obj = {name: '凤求凰',age: '未知', sex: '男'};
//对象及对象中的三个属性
let {name, age, sex} = obj;
//三个解构变量与obj对象中的三个属性名一一匹配

要点注意!!一定要用let关键字!!

结果验证      

{
            let obj = {name: '凤求凰', age: '未知', sex: '男'};
            //对象及对象中的三个属性
            let {name, age, sex} = obj;
            //三个解构变量与obj对象中的三个属性名一一匹配
            console.log(name);
            console.log(age);
            console.log(sex);
        }

 四、对象解构第二种写法

原理:

      对象解构允许我们用书写对象属性的方式书写解构变量,其属性值就是变量名

语法:

      let关键字+{属性名:变量名}= 对象{属性名:属性值}(也可以是对象名

注意解构符号里的属性名一定要绝对匹配于对象中的属性名!!!!!!!

举个栗子~

 结果验证   

 {
            let obj = {name: '凤求凰', age: '未知', sex: '男'};
            let {name: MyName, age: MyAge, sex:TheSex} = obj;
            console.log(MyName);
            console.log(MyAge);
            console.log(TheSex);
        }


五、对象解构赋值的常见类型

基本类型

      上面例子就是~

可嵌套类型

      语法同基本类型相似,记住嵌套部分依旧用中括号对象属性用大括号包裹
     

 {
            let obj = {name: ['凤求凰', {age: '未知', sex: '男'}]};
            let {name:[Myname, {age}, {sex}]} = obj;
            //Myname = 凤求凰
            //age = 未知
            //sex = 男
        }

忽略类型

     

 {
            let obj = {name: ['凤求凰', {age: '未知'}]};
            let {name:[Myname, { }]} = obj;
            //Myname = 凤求凰
        }

不完全解构类型

     

 {
            let obj = {name: ['凤求凰', {age: '未知'}]};
            let {name:[Myname, {age}, add]} = obj;
            //Myname = 凤求凰
            //age = 未知
            //add = undefined
        }

剩余运算符类型

     

 {
            let {name, ...ect} = {name: '凤求凰', age: '未知', sex: '男'};
            //Myname = 凤求凰
            //age: "未知",sex: "男"[[Prototype]]: Object
        }

解构默认值

     

 {
            let {name: Myname = '凤凰于飞', age :MyAge = 20''} = {name: '凤求凰'};
            //Myname = 凤求凰
            //MyAge = 20
        }

结束语

希望本篇文章可以帮到求知若渴的众多同学吖~
若能帮到 也欢迎
点赞、收藏、关注我,后续也会持续发布新文章,祝大家学有所成!
欢迎各位前端大佬留言讨论指教!
 小糖谢谢各位啦~❤  ❤  ❤  ❤

### ES6 对象解构赋值 #### 基本语法 对象的解构赋值允许提取对象中的属性并将其分配给变量。基本形式如下: ```javascript let obj = { prop1: "value1", prop2: 42 }; let { prop1, prop2 } = obj; console.log(prop1); // 输出:"value1" console.log(prop2); // 输出:42 ``` 此操作会创建两个新变量 `prop1` 和 `prop2`, 它们的初始值分别对应于对象 `obj` 中相应键对应的值[^1]。 #### 设置默认值 当尝试从不存在或未定义的对象属性获取值时,可以通过指定默认值来处理这种情况: ```javascript let userSettings = { theme: 'dark', }; // 使用默认参数 let { theme = 'light', fontSize = 16 } = userSettings; console.log(theme); // dark (来自实际数据) console.log(fontSize); // 16 (使用了默认设置) ``` 这里展示了如何为可能缺失的配置项提供合理的回退选项[^2]. #### 属性重命名 有时希望使用的局部变量名称不同于原始对象内的键名,在这种情况下可以采用别名机制完成映射关系建立: ```javascript const person = { firstName: 'John', lastName: 'Doe' }; let { firstName: name, lastName: surname } = person; console.log(name); // John console.log(surname); // Doe ``` 上述代码片段说明了即使原对象字段名为 `firstName` 和 `lastName`, 可以通过冒号后的部分自定义新的绑定目标名字[^3]. #### 处理剩余属性 对于那些不参与直接匹配却仍然存在于源对象里的其他成员,则可通过扩展运算符(`...`)捕获它们形成一个新的独立实体: ```javascript var sourceObj = { id: 7, title: "A Tale of Two Cities", author: "Charles Dickens", yearPublished: 1859 }; let {id, ...bookInfo} = sourceObj; console.log(id); // 7 console.log(bookInfo.title);// A Tale of Two Cities console.log(bookInfo.author); // Charles Dickens console.log(bookInfo.yearPublished); // 1859 ``` 这段例子表明除了显式声明过的 `id` 字段外,其余所有条目都被收集到了 `bookInfo` 这个新对象里去了.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值