ES6-对象的解构赋值

一、区别一下数组的解构赋值

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

二、说明

- 对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。
- 真正被赋值的是后者,而不是前者。
- 前者主要是用于匹配
  • 示例
      let obj = {name: "wyt",age: 18,};let { name: myname } = obj;console.log("name:" + name);console.log("myname:" + myname);//上面代码中,foo是匹配的模式,baz才是变量。真正被赋值的是变量baz,而不是模式foo
  • 效果
    在这里插入图片描述
  • 解惑
大家可能会有疑惑
- 问题:为什么值(字符串wyt)被赋值给了myname而非name
- 答案:此处name仅仅是匹配模式,myname才是变量即真正被赋值的是变量myname而非name

三、示例

1)简单的完整解构赋值

  • 示例
      let obj = {name: "wyt",age: 18,};let { name, age } = obj;console.log("name:" + name);console.log("age:" + age);
  • 效果
    在这里插入图片描述
  • 完整的代码
      let obj = {name: "wyt",age: 18,};let { name: name, age: age } = obj;//前者name是匹配模式,后者name是真正被赋值的变量console.log("name:" + name);console.log("age:" + age);

2)简单的部分解构赋值(即按需解构)

  • 示例
      let obj = {name: "wyt",age: 18,};let { name: name, age: age } = obj;console.log("age:" + age);
  • 效果
    在这里插入图片描述

3)过度解构

一般未匹配到的变量常常被赋值为undefined
  • 示例
      let obj = {name: "wyt",age: 18,};//会发现obj中并没有school属性let { name, age, school } = obj;console.log("obj:name" + name + ",age=" + age + ",school=" + school);
  • 效果
    在这里插入图片描述

4)复杂的完整解构

  • 示例
      let stus_obj = {stu_1: {name: "wyt",age: 18,},stu_2: {name: "wyh",age: 15,},};let {stu_1: { name: name1, age: age1 },stu_2: { name: name2, age: age2 },} = stus_obj;console.log("stu_1:name=" + name1 + ",age=" + age2);console.log("stu_2:name=" + name2 + ",age=" + age2);
  • 效果
    在这里插入图片描述
  • 疑惑
- 大家可能会好奇两个问题
- 问题一:语句let {stu_1: { name: name1, age: age1 },stu_2: { name: name2, age: age2 },} = stus_obj;中的stu_1,stu_2是否被赋值
- 答案:这里的stu_1,stu_2未被赋值,这里仅仅用于匹配
- 问题二:为什么上面的语句不可以写成语句let {stu_1: { name, age },stu_2: { name, age },} = stus_obj;
- 答案:Cannot redeclare block-scoped variable 'name''age'
  • 解惑(如何获取stu_1和stu_2)
      let stus_obj = {stu_1: {name: "wyt",age: 18,},stu_2: {name: "wyh",age: 15,},};let {stu_1,stu_2,stu_1: { name: name1, age: age1 },stu_2: { name: name2, age: age2 },} = stus_obj;console.log(stu_1);console.log("stu_1:name=" + name1 + ",age=" + age2);console.log(stu_2);console.log("stu_2:name=" + name2 + ",age=" + age2);

在这里插入图片描述

5)剩余运算符

  • 示例
      let obj = {name: "wyt",age: 18,school: "七中",};//即将对象obj内的除了name以外的属性组件成一个新对象let { name, ...rest } = obj;console.log("name:" + name);console.log(rest);
  • 效果
    在这里插入图片描述

6)赋予默认值

  • 示例
      let obj = {name: "wyt",age: 18,};//此时的school被赋予了默认值七中,当school未匹配到时或者值为undefined时值为七中let { name, age, school = "七中" } = obj;console.log("name:" + name);console.log("age:" + age);console.log("school:" + school);
  • 效果
    在这里插入图片描述

四、应用

1)常用于解构对象中的方法

// 例一
let { log, sin, cos } = Math;
// 例二
const { log } = console;
log('hello') // hello//例一将Math对象的对数、正弦、余弦三个方法,赋值到对应的变量上,使用起来就会方便很多。
//例二将console.log赋值到log变量。

2)常用于解构JSON对象里面所需的属性

      let jsonData = {id: 42,status: "OK",data: [867, 5309],};//此时仅仅需要id和data属性的值let { id, data } = jsonData;console.log("id:" + id);console.log("data:");console.log(data);
  • 效果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/251647.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

共享网盘系统PHP源码

新V5.0版本,支持上传视频、支持视频播放、支持共享,也可以自己用。 可以自动生成视频外链,下载地址,播放器代码,html代码,ubb代码等等。 使用方法: 源码上传到服务器,打开网站根据…

两种方式实现文本超出指定行数显示展开收起...

需要实现这样一个功能 默认高度下文本超出隐藏&#xff0c;点击展开可查看所有内容&#xff0c;点击收起可折叠 方法一&#xff1a;通过html和css实现 代码部分 html:<div className"expand-fold"><input id"check-box" type"checkbox&qu…

云计算关键技术

目录 一、云计算关键技术概述 1.1 概述 二、关键技术内容 2.1 虚拟化技术 2.2 分布式数据存储技术 2.3 资源管理技术 2.4 云计算平台管理技术 2.5 多租户隔离技术 2.5.1 多租户技术下SaaS 特征 2.5.2 多租户技术面临的技术难题 2.5.2.1 数据隔离 2.5.2.2 客户化配置…

Mybatis基础教程及使用细节

本篇主要对Mybatis基础使用进行总结&#xff0c;包括Mybatis的基础操作&#xff0c;使用注解进行增删改查的练习&#xff1b;详细介绍xml映射文件配置过程并且使用xml映射文件进行动态sql语句进行条件查询&#xff1b;为了简化java开发提高效率&#xff0c;介绍一下依赖&#x…

前端登陆加密解决方案

项目背景 环食药烟草的数据下载模块中&#xff0c;需要判断用户在进行数据下载时是进行了登录操作&#xff0c;如果没有登录要跳转登陆页面&#xff0c;输入账号和密码进行登录。 使用场景 项目中需要前端书写登录页面&#xff0c;用户输入账号密码&#xff0c;前端获取到用…

嵌入式学习第十六天!(Linux文件查看、查找命令、标准IO)

Linux软件编程 1. Linux&#xff1a; 操作系统的内核&#xff1a; 1. 管理CPU 2. 管理内存 3. 管理硬件设备 4. 管理文件系统 5. 任务调度 2. Shell&#xff1a; 1. 保护Linux内核&#xff08;用户和Linux内核不直接操作&#xff0c;通过操作Shell&#xff0c;Shell和内核交互…

return语句

一、return语句 使用在方法时&#xff0c;表示跳出所在方法使用在main方法时&#xff0c;表示退出程序 二、break、continue、return三者的比较 break语句&#xff1a;跳出循环continue语&#xff1a;结束当次循环&#xff0c;继续下一次循环return语句&#xff1a;使用在方法时…

impala与kudu进行集成

文章目录 概要Kudu与Impala整合配置Impala内部表Impala外部表Impala sql操作kuduImpala jdbc操作表如果使用了Hadoop 使用了Kerberos认证&#xff0c;可使用如下方式进行连接。 概要 Impala是一个开源的高效率的SQL查询引擎&#xff0c;用于查询存储在Hadoop分布式文件系统&am…

Android学习之路(28) 进程保活组件的封装

前言 远古时代&#xff0c;出现过很多黑科技&#xff0c;比如MarsDaemon&#xff0c;使用双进程守护的方式进行保活&#xff0c;在当时可谓风光无限&#xff0c;可惜在8.0时代到来就被废弃了。 又比如后面出现的1像素Activity的保活方式&#xff0c;说他流氓一点不过分&#…

自动运维ansible实训(网络管理与维护综合实训)

来自即将退役学长的分享&#xff0c;祝学弟学妹以后发大财&#xff01; 一 实训目的及意义 1.1 实训目的 1、熟悉自动化运维工具&#xff1a;实训旨在让学员熟悉 Ansible 这一自动化运维工具。通过实际操作&#xff0c;学员可以了解 Ansible 的基本概念、工作原理和使用方法…

【数据结构】排序---C语言版

七大排序算法 一、对于排序的分类&#xff1a;二、插入排序1、直接插入排序&#xff08;1&#xff09;基本思想&#xff1a;&#xff08;2&#xff09;直接插入排序&#xff1a;&#xff08;3&#xff09;代码实现&#xff1a;&#xff08;4&#xff09;总结&#xff1a; 2、希…

BAPI创建会计凭证和冲销凭证

目录 BAPI创建会计凭证和冲销凭证组件 利润中心冲销不可能原因由于一个变量为空导致不可以冲销 代码附上创建会计凭证代码冲销会计凭证代码 BAPI创建会计凭证和冲销凭证 在使用冲销会计凭证的BAPI&#xff0c;即BAPI_ACC_DOCUMENT_REV_POST时&#xff0c;遇到下面的问题&#…

Vue(二十):ElementUI 扩展实现表格组件的拖拽行

效果 源码 注意&#xff1a; 表格组件必须添加 row-key 属性&#xff0c;用来优化表格的渲染 <template><el-row :gutter"10"><el-col :span"12"><el-card class"card"><el-scrollbar><span>注意: 表格组件…

【数据库】关系型和非关系型数据库的区别?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 正文 关系型数据库的优点 非关系型数据库&#xff08;NOSQL&#xff09;的优点 我的其他博客 正文 关系型数据库的优点 容易理解&#xff0c…

Python 数据可视化:配色方案

1、引言 在这篇文章中&#xff0c;我们将研究Python的一些配色方案&#xff0c;主要是Seaborn库。这将采用 Python Notebook 格式&#xff0c;其中包括绘图的代码。 2、实验数据 首先导入必要的库&#xff1a; import pandas as pd import seaborn as sns import matplotlib…

基于springboot篮球竞赛预约平台源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;篮球竞赛预约平台也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而…

虚幻UE 特效-Niagara特效实战-魔法阵

回顾Niagara特效基础知识&#xff1a;虚幻UE 特效-Niagara特效初识 其他四篇实战&#xff1a;UE 特效-Niagara特效实战-烟雾、喷泉、 虚幻UE 特效-Niagara特效实战-火焰、烛火、 虚幻UE 特效-Niagara特效实战-雨天、 虚幻UE 特效-Niagara特效实战-眩晕。 本篇笔记记录了使用空模…

Matplotlib热力图的创意绘制指南【第54篇—python:Matplotlib热力图】

文章目录 Matplotlib热力图的创意绘制指南1. 简介2. 基本热力图3. 自定义颜色映射4. 添加注释5. 不同形状的热力图6. 分块热力图7. 多子图热力图8. 3D热力图9. 高级颜色映射与颜色栏设置10. 热力图的动态展示11. 热力图的交互性12. 标准化数据范围13. 导出热力图 总结&#xff…

动态颗粒背景,适合VUE、HTML前端显示

动态颗粒背景&#xff0c;适合做背景使用&#xff0c;VUE、HTML前端显示直接看效果 废话不多说直接上代码&#xff1b; 一、html 代码部分 <template><div id"login"><div class"container"><div class"login-form"&g…

C++实战Opencv第二天——色彩空间转换函数和opencv中图像对象创建与赋值(从零开始,保姆教学)

OpenCV是一个强大的计算机视觉库&#xff0c;使用C作为主要编程语言&#xff0c;对于图像处理和计算机视觉领域具有重要意义。其提供了丰富的功能和算法&#xff0c;使得开发者能够快速实现各种图像处理和计算机视觉应用。OpenCV C为图像处理和计算机视觉领域的开发者提供了一个…