对象的解构赋值

一、对象的解构赋值有顺序吗

对象的解构赋值是按照属性名来解构的,属性名相同的情况下,后面的解构会覆盖掉前面的解构。

let obj = {a: 1, b: 2, c: 3};
let {a, b, c} = obj;
console.log(b); // 2
let {a: A, b: B, c: C, d: D} = obj;
console.log(B, D); // 2 undefined

在上面的例子中,代码中首先定义了一个对象obj,这个对象有三个属性:a、b和c。接着通过解构赋值将对象的属性分别赋值给了变量a、b和c。然后再次进行解构,将属性名a赋给了变量A,将属性名b赋给了变量B,将属性名c赋给了变量C,属性名d没有对应的值,所以变量D的值为undefined。

二、什么是解构赋值

解构赋值是从数组或对象中提取数据并赋值给变量的一种方式。

通过解构赋值,可以快速的获取数组或对象中需要的部分数据,而不用进行复杂的遍历操作。在ES6中,提供了数组和对象的解构赋值语法,方便了开发者的编码工作。

let arr = [1, 2, 3];
let [a, b, c] = arr;
console.log(b); // 2
let obj = {name: 'Jack', age: 18};
let {name, age} = obj;
console.log(name); // Jack

在上面的例子中,对数组和对象进行了解构赋值。数组的解构赋值通过中括号来表示,对象的解构赋值通过花括号来表示。

三、对象的解构赋值是浅拷贝吗

对象的解构赋值并不是浅拷贝,而是将原对象中引用类型的属性进行浅拷贝后,将新对象的引用赋给解构赋值语句左侧的相应变量。

let obj = {a: {b: 1}};
let {a} = obj;
a.b = 2;
console.log(obj.a.b); // 2

在上面的例子中,原对象obj中的属性a是一个对象,通过解构赋值将属性a赋值给了变量a。之后,对变量a的属性进行了修改,发现原对象obj中的属性a的值也被修改了。

四、对象的解构赋值会有什么弊端

对象的解构赋值中,如果解构的属性不存在,那么对应的变量将会被赋值为undefined。如果后面的代码使用了这些未定义的变量,那么就会抛出错误。在实际的开发中应该注意解构的属性是否存在。

let obj = {a: 1, b: 2};
let {a, c} = obj;
console.log(c); // undefined

在上面的例子中,代码中尝试解构对象obj的属性a和c。由于属性c在对象中不存在,所以变量c被赋值为undefined。

五、对象结构赋值

对象的结构赋值可以有多层嵌套,也可以使用默认值来避免不存在的属性报错。

let obj = {
  name: 'Alice',
  age: 18,
  scores: {
    math: 80,
    english: 90
  }
};
let {name, age, scores: {math, chinese = 70}} = obj;
console.log(name, age, math, chinese); // Alice 18 80 70

在上面的例子中,对象中的属性score是一个对象,通过使用scores: {math, chinese = 70}的写法,将score中的属性math赋值给了变量math,而chinese设置了默认值70,如果对象中不存在属性chinese,那么变量chinese的值将被赋值为70。

六、对象解构赋值默认值

解构赋值中可以设置变量的默认值,如果解构的属性的值为undefined,那么将使用默认值。

let obj = {a: 1, c: 3};
let {a, b = 2, c} = obj;
console.log(a, b, c); // 1 2 3

在上面的例子中,对象中的属性b是不存在的,通过设置b的默认值为2,如果对象中不存在属性b,那么变量b的值将被赋值为2。

七、解构赋值避免了临时变量或对象选取

解构赋值可以很方便地获取数组和对象中需要的部分数据,避免了使用临时变量或对象属性选取的操作。

let arr = [1, 2, 3];
let [,,c] = arr;
console.log(c); // 3
let obj = {name: 'Jack', age: 18};
let {name} = obj;
console.log(name); // Jack

在上面的例子中,数组中通过解构赋值获取了变量c的值,对象中通过解构赋值获取了变量name的值。

原创文章,作者:GCXX,如若转载,请注明出处:https://www.506064.com/n/138410.html

(0)
GCXXGCXX
上一篇 2024-10-04
下一篇 2024-10-04

相关推荐

  • 2022 年 Python 十大要学习的库

    在编程世界中,Python 是需求最大、效率最高的编程语言。有许多原因使 Python 成为一种非常受欢迎的语言。吸引人的一点是它不可思议的延展性。Python 提供了数千个库,减…

    编程 2024-10-03
  • 提高效率,掌握less命令的常用操作

    一、简介 Less是一个功能强大的Linux命令行分页工具,它可以让你更方便地查看文件内容,特别是当你处理那些大于终端屏幕高度的文件时。 本文将介绍Less的常用操作,帮助你更好地…

    编程 2024-10-03
  • sstap怎么用?从共享网络到添加游戏全教程

    一、sstap怎么共享网络 如果您想要在多个设备中使用同一个网络连接,可以使用sstap来共享网络 步骤如下: 1. 下载并安装sstap软件 下载地址:http://sstap.…

    编程 2024-10-12
  • 在系统变量必须要新建java,电脑为什么要新建环境变量

    本文目录一览: 1、重装系统后Java的环境变量需要配置吗 2、为什么安装完Java以后要新建或设置java_home,path,classpath这些系统变量,有什么用 3、ja…

    编程 2024-10-04
  • mysql数据库日志配置问题(如何设置数据库日志)

    本文目录一览: 1、mysql 日志 2、如何在MySql中记录SQL日志记录 3、mysql 很多慢日志,怎么解决 4、MySQL数据库日志配置问题 5、MYSQL日志组如何调整…

    编程 2024-10-03
  • PHP数组重新排序方法

    PHP是一门简单、易学、开源的编程语言,最适合网络编程。它是目前全球使用最广泛的语言之一,同时它也是世界上最领先的服务器端技术。在PHP中,数组是一个非常常用的数据类型,通常用来存…

    编程 2024-10-04
  • pythonjs变量,关于python变量

    本文目录一览: 1、python传递给js的列表中文乱码怎么解决 2、python的循环和js的循环一样吗 3、python中如何调用js文件中的方法呢 4、如何将python执行…

    编程 2024-10-04
  • oracle删除表数据详解

    一、使用DELETE语句删除表数据 DELETE语句是oracle中用来删除表数据的主要语句。它可以删除单个表的数据,也可以删除关联表的数据。使用该语句时,需要注意以下几点: 1、…

    编程 2024-10-04
  • 共定位分析详解

    一、共定位分析是什么 共定位分析,也称共定位显微镜,是一种利用两个或多个荧光探针同时标记不同分子,在同一细胞或组织中对它们的相对位置进行研究的方法。共定位分析既可以用来观察分子之间…

    编程 2024-10-14
  • Linux查看网关命令详解

    一、Linux命令看网关 在网络设置过程中,常常需要查看网关信息。使用Linux命令可以简单快捷地查看当前系统网关的IP地址,只需要在终端中输入以下命令: route -n 执行上…

    编程 2024-10-04

发表回复

登录后才能评论