JavaScript解构赋值完全手册

🧑‍🎓 个人主页:《爱蹦跶的大A阿》

🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》

​ 

目录

✨ 前言

第一节:解构赋值的基本用法

第二节:对象解构赋值

 第三节:数组解构赋值

第四节:参数中的解构赋值

4.1 对象解构:

4.2 数组解构:

第五节:嵌套解构赋值

5.1 对象嵌套解构:

5.2 数组嵌套解构:

 

第六节:解构赋值的应用

第七节:从函数返回多个值

第八节:定义函数参数

第九节:处理JSON数据

第十节:遍历Map和Set

第十一节:参数默认值

✨ 结语   


 

✨ 前言

        ES6中新增的解构赋值(Destructuring Assignment)是一种便捷获取属性和赋值的特性。它可以让我们以更直观的方式处理对象和数组,极大地提高了开发效率。本文将全面介绍解构赋值的用法及运用技巧,让你在JavaScript编码中如虎添翼。

通过本文,你将学到:

  • 解构赋值的基本语法和规则
  • 如何快速从对象和数组中取值
  • 在函数参数中使用解构赋值的好处
  • 灵活运用默认值和嵌套解构
  • 解构赋值提高代码可读性的实际例子

让我们开始学习这一极大提高了JavaScript开发效率的语法糖吧!

第一节:解构赋值的基本用法

解构赋值可以让我们使用变量快速获取对象或数组的属性/元素。

对象解构:

let person = {name: 'Jack',age: 20
};let { name, age } = person;
// name = 'Jack', age = 20

数组解构:

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

解构赋值遵循匹配的模式,可以忽略不需要的部分。

第二节:对象解构赋值

对象解构可以指定需要的属性:

let person = {name: 'Jack',age: 20,gender: 'male' 
};let { name, age } = person;
//只取name和age属性

可以赋值给新变量名:

let { name: fullName, age: personAge } = person; 
// fullName = 'Jack'
// personAge = 20

 可以设置默认值:

let { name='Tom', age} = person;
// name = 'Jack', age = 20

 第三节:数组解构赋值

数组解构遵循位置匹配:

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

剩余元素可以用...rest语法收集:

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

 同样可以设置默认值:

let [a=10, b] = [undefined, 2];
// a = 10, b = 2

第四节:参数中的解构赋值

解构赋值可以用于函数的参数,方便访问对象属性或数组元素。

4.1 对象解构:

 

function print({ name, age }) {console.log(name, age);
}let person = { name: 'Jack',age: 20
};print(person); 
// 'Jack' 20

4.2 数组解构:

function sum([a, b]) {return a + b;
}sum([10, 20]); // 30

这使函数语义更加清晰,一目了然。

第五节:嵌套解构赋值

解构赋值可以递归嵌套使用。

5.1 对象嵌套解构:

let person = {name: 'Jack',age: 20,address: {city: 'New York',state: 'NY'}
};let { name, address: { city } } = person;
// name = 'Jack', city = 'New York'

5.2 数组嵌套解构:

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

 

嵌套解构可以访问多层对象属性。

第六节:解构赋值的应用

解构赋值在实际开发中有很多运用场景,可以使我们的代码更简洁高效。

  • 交换变量的值
    [a, b] = [b, a];

  • 从函数返回多个值
  • 函数参数的定义
    • 提取JSON数据
    • 遍历Map和Set等

第七节:从函数返回多个值

解构赋值可以让我们从函数方便地返回多个值:

function getPerson() {return {name: 'Jack',age: 20}; 
}let { name, age } = getPerson();

不需要再定义复杂的对象。

第八节:定义函数参数

解构可以方便地定义函数参数:

function print({ name, age}) {// ...
}print({ name: 'Jack',age: 20
})

 避免再函数体内部重复获取name和age。

第九节:处理JSON数据

解构赋值可以快速提取JSON对象的数据:

let json = {code: 200,data: {name: 'Jack',age: 20}
}let { code, data: { name } } = json;
// code = 200, name = 'Jack'

第十节:遍历Map和Set

解构可以遍历Map和Set:

let map = new Map([['a', 1], ['b', 2]]);for (let [key, value] of map) {// ...
}

        解构赋值在实际项目中应用广泛,能大幅提高开发效率。需要多加练习,以巩固掌握。

以上介绍了解构赋值的主要用法,如还有疑问,欢迎提出讨论!

第十一节:参数默认值

在解构赋值时可以为参数设置默认值:

function print({name, age=20}) {// ...
}print({name: 'Jack'}); // age=20

这可以使参数可选,增加了函数的灵活性。

第十二节:注意事项

  • 对象需要声明的变量名与属性同名
  • 数组需要对应位置
  • 嵌套解构可以多层提取
  • 不完全解构也可以只取需要的部分

需要注意匹配的模式,才能正确获取值。

第十三节:浏览器兼容性

解构赋值是ES6引入的特性,老版本浏览器可能还不支持。

可以通过编译器转换为ES5代码,或使用polyfill提高兼容性。

现代浏览器基本都已支持解构赋值,但还是需要考虑低版本浏览器。

✨ 结语   

解构赋值提高了访问对象和数组值的便捷性,使代码更加简洁。

需要理解其匹配模式,运用自如才能发挥最大效用。

解构赋值已经成为JavaScript不可或缺的重要特性,值得我们深入学习运用。

以上内容概括了解构赋值的全方位知识,如还有任何问题,欢迎在评论讨论!

    

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

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

相关文章

Fluids —— MicroSolvers DOP

目录 Gas SubStep —— 重复执行对应的子步 Switch Solver —— 切换解算器 Gas Attribute Swap —— 交换、复制或移动几何体属性 Gas Intermittent Solve —— 固定时间间隔计算子解算器 Gas External Forces —— 计算外部力并更新速度或速度场 Gas Particle Separate…

【linux】tcpdump 使用

tcpdump 是一个强大的网络分析工具,可以在 UNIX 和类 UNIX 系统上使用,用于捕获和分析网络流量。它允许用户截取和显示发送或接收过网络的 TCP/IP 和其他数据包。 一、安装 tcpdump 通常是默认安装在大多数 Linux 发行版中的。如果未安装,可…

竞赛保研 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较…

prometheus 黑盒监控

黑盒监控 “白盒监控” 是需要把对应的Exporter程序安装到被监控的目标主机上,从而实现对主机各种资源以及状态的数据采集工作 ”黑盒监控“ 是不需要把Exporter程序部署到被监控的目标主机上,比如全球的网络质量的稳定性,通常用ping操作&am…

2019年认证杯SPSSPRO杯数学建模A题(第一阶段)好风凭借力,送我上青云全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 纸飞机在飞行状态下的运动模型 A题 好风凭借力,送我上青云 原题再现: 纸飞机有许多种折法。世界上有若干具有一定影响力的纸飞机比赛,通常的参赛规定是使用一张特定规格的纸,例如 A4 大小的纸张…

数据结构——队列(Queue)

目录 1.队列的介绍 2.队列工程 2.1 队列的定义 2.1.1 数组实现队列 2.1.2 单链表实现队列 2.2 队列的函数接口 2.2.1 队列的初始化 2.2.2 队列的数据插入(入队) 2.2.3 队列的数据删除(出队) 2.2.4 取队头数据 2.2.5 取队…

python匹配问题

脏数据匹配 一般数据建模步骤中,数据清洗耗时占比80%以上,因为现实中接触到的数据相当脏,无法直接简单的用pandas的merge函数解决。下面以QS大学排名的匹配为例,简单介绍脏数据匹配中会遇到的问题和主要步骤。 1 问题描述 给定…

Vue.js设计与实现阅读2

Vue.js设计与实现阅读-2 1、前言2、框架设计的核心要素2、1 提升用户体验2、2 控制代码体积2、3 Tree-Shaking2、4 特性开关2、5 错误处理 1、前言 上一篇我们了解到了 命令式和声明式的区别,前者关注过程,后者关注结果了解了虚拟dom存在的意义&#x…

Java后端开发——SSM整合实验

文章目录 Java后端开发——SSM整合实验一、常用方式整合SSM框架二、纯注解方式整合SSM框架 Java后端开发——SSM整合实验 一、常用方式整合SSM框架 1.搭建数据库环境:MySQL数据库中创建一个名称为ssm的数据库,在该数据库中创建一个名称为tb_book的表 …

如何顺滑使用华为云编译构建平台?

这两年平台构建服务需求越来越大,却一直苦于找不到一些指南, 这里特意写了一篇, 对在学习代码阶段和新手程序员朋友也蛮友好, 配置真的也不难, 也特别适合想尝试从0到1做个APP的朋友了。 以华为云的CodeArts Build为例…

OpenBLAS 的静态库命名分析 — — 以 x86_64 的静态库为例

在不同的机器上,生成的openblas生成的lib的名字可能是这样的: libopenblas_skylakexp-r0.3.26.dev.a libopenblas_skylakexp-r0.3.26.dev.so 也可能是这样的: liblapack_static_haswellp-r0.3.25.dev.a libopenblas_haswellp-r0.3.26.dev…

Linux-添加虚拟内存,不添加硬盘方式操作

在linux中,当物理内存mem不足时,就会使用虚拟内存(swap分区) 例如增加2G虚拟内存,操作如下: 1.查看内存大小 [rootlocalhost ~]# free -m 2.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的cou…

1. 认识SPSS

使用的是IBM SPSS statistics 25,参考教材《统计分析与SPSS的应用》 一、安装和启动 具体安装过程是参考spss下载以及安装详细教程这篇文章,下载安装包然后按他的步骤获取用户许可证即可。 二、主要窗口 数据编辑器窗口data editor 是SPSS的主程序窗…

ssm基于Vue的戏剧推广网站论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统戏剧推广信息管理难度大,容错率低&#xff0c…

代码随想录day23 二叉岁终章

669. 修剪二叉搜索树 题目 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 思考 这题有个…

2024年中职网络安全——Windows操作系统渗透测试(Server2105)

Windows操作系统渗透测试 任务环境说明: 服务器场景:Server2105服务器场景操作系统:Windows(版本不详)(封闭靶机)需要环境加Q 目录 1.通过本地PC中渗透测试平台Kali对服务器场景进行系统服务…

Docker 部署后端项目自动化脚本

文章目录 开机自启动docker打包后端项目Dockerfile文件脚本文件使用 开机自启动docker systemctl enable dockersystemctl is-enabled docker打包后端项目 这里的项目位置是target同级目录 1.在项目下面新建一个bin目录 新建一个package.txt 写入下方代码后 后缀改为.bat ec…

配置git服务器

第一步: jdk环境配置 (1)搜索【高级系统设置】,选择【高级】选项卡,点【环境变量】 (2)在【系统变量】里面,点击【新建】 (3)添加JAVA_HOME环境变量JAVA_HO…

小程序学习基础(页面加载)

打开首页&#xff0c;然后点击第一个按钮进去心得页面 进入心得页面以后 第一个模块是轮播图用的是swiper组件&#xff0c;然后就是四个按钮绑定点击事件&#xff0c;最后就是下拉刷新&#xff0c;下拉滚动&#xff0c;上拉加载。代码顺序wxml,js,wcss,json。 <!--pages/o…

【开源商城推荐-LGPL-3.0】ts-mall 聚惠星商城

dts-shop: 聚惠星商城 DTS-SHOP&#xff0c;基于 微信小程序 springboot vue 技术构建 &#xff0c;支持单店铺&#xff0c;多店铺入驻的商城平台。项目包含 微信小程序&#xff0c;管理后台。基于java后台语言&#xff0c;已功能闭环&#xff0c;且达到商用标准的一套项目体…