ES6 的解构赋值
解构赋值(Destructuring assignment)是一种方便快捷的方式,可以从对象或数组中提取数据,并将数据赋值给变量。解构赋值是ES6中一项强大且常用的特性.
1. 基本数组解构
首先,让我们看看如何对数组进行解构赋值。假设我们有一个数组 [1, 2, 3]
,我们可以这样解构它:
let [a, b, c] = [1, 2, 3];
// a = 1
// b = 2
// c = 3
2. 嵌套数组解构
数组解构也支持嵌套结构。例如:
let [a, [[b], c]] = [1, [[2], 3]];
// a = 1
// b = 2
// c = 3
3. 忽略某些元素
如果我们只对数组中的某些元素感兴趣,可以使用逗号跳过不需要的部分:
let [a, , b] = [1, 2, 3];
// a = 1
// b = 3
4. 默认值
解构赋值还支持默认值。如果解构的值为 undefined
,将会使用默认值:
let [a = 1, b] = [];
// a = 1
// b = undefined
5. 剩余运算符
剩余运算符 ...
可以将剩余的元素收集到一个数组中:
let [a, ...b] = [1, 2, 3];
// a = 1
// b = [2, 3]
6. 字符串解构
字符串也可以进行解构赋值:
let [a, b, c, d, e] = 'hello';
// a = 'h'
// b = 'e'
// c = 'l'
// d = 'l'
// e = 'o'
7. 对象解构
除了数组,我们还可以对对象进行解构赋值。例如:
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
// foo = 'aaa'
// bar = 'bbb'
8. 嵌套对象解构
对象解构也支持嵌套结构:
let obj = { p: ['hello', { y: 'world' }] };
let { p: [x, { y }] } = obj;
// x = 'hello'
// y = 'world'
9. 默认值和剩余运算符
剩余运算符可以用于收集剩余的元素,无论是数组还是对象。这在处理不定数量的参数时非常实用:
function sum(...numbers) {return numbers.reduce((acc, curr) => acc + curr, 0);
}console.log(sum(1, 2, 3, 4)); // 输出 10
10. 解构赋值的应用场景
解构赋值在实际开发中有许多应用场景:
-
函数参数解构:可以在函数参数中使用解构赋值,使代码更清晰:
function printUser({ name, age }) {console.log(`Name: ${name}, Age: ${age}`); }const user = { name: 'Alice', age: 30 }; printUser(user); // 输出 "Name: Alice, Age: 30"
-
交换变量值:使用解构赋值可以轻松交换两个变量的值:
let a = 1; let b = 2; [a, b] = [b, a]; // 现在 a = 2, b = 1
-
从函数返回多个值:解构赋值可以方便地从函数中返回多个值:
function getCoordinates() {return { x: 10, y: 20 }; }const { x, y } = getCoordinates(); // x = 10, y = 20
相关文章:
ES6 的解构赋值
解构赋值(Destructuring assignment)是一种方便快捷的方式,可以从对象或数组中提取数据,并将数据赋值给变量。解构赋值是ES6中一项强大且常用的特性. 1. 基本数组解构 首先,让我们看看如何对数组进行解构赋值。假设我…...

蓝桥杯物联网竞赛_STM32L071KBU6_全部工程及国赛省赛真题及代码
包含stm32L071kbu6全部实验工程、源码、原理图、官方提供参考代码及国、省赛真题及代码 链接:https://pan.baidu.com/s/1pXnsMHE0t4RLCeluFhFpAg?pwdq497 提取码:q497...

关于UCG游戏平台的一些思考
UCG游戏平台,全称User Generated Content,即用户生成内容。它涵盖了所有玩家可以自主编辑的部分,包含并不限于换装、捏脸、关卡摆放等内容。 UCG概念在最近又火了起来,但这个模式出现的并不早。早在10多年前,war3编辑器…...

一起学习python——基础篇(20)
前言,之前经常从网上找一些免费的接口来测试,有点受制于人的感觉。想了想还不如直接写一个接口,这样方便自己测试。自己想返回什么格式就返回什么样子,不用担心服务报错,因为自己就可以完全掌控。然后宿舍二哥告诉我py…...

云服务器安装Mysql、MariaDB、Redis、tomcat
前置工作 进入根目录 cd / 创建java文件夹 mkdir java 进入java文件夹 cd java 上传压缩包 rz 压缩包 Mysql 1.下载并安装MySQL官方的 Yum Repository wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noa…...
Android笔记--MediaCodec(二)
这一节主要了解MediaCodec处理音频,MediaCodec直译媒体解码器,用于访问媒体编解码器,即编码器/解码器组件,它是 Android 多媒体支持基础设施的一部分;从广义上讲,编解码器处理输入数据以生成输出数据。它异…...

【Java探索之旅】方法重载 递归
🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、方法重载1.1 为什么要有方法重载1.2 方法重载的概念与使用1.3 方法签名 二、递归2…...

多输入多输出 | Matlab实现XGboost多输入多输出预测
多输入多输出 | Matlab实现XGboost多输入多输出预测 目录 多输入多输出 | Matlab实现XGboost多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现XGboost多输入多输出预测 1.data为数据集,10个输入特征,3个输出变量…...
【设计模式】3、builder 建造者模式
文章目录 三、builder 模式(生成器)3.1 build 房屋3.1.1 builder.go3.1.2 director.go3.1.3 director_test.go3.1.4 house.go3.1.5 igloo_builder.go3.1.6 normal_builder.go3.1.7 测试 3.2 option3.2.1 pool_test.go3.3.2 pool.go3.3.3 option.go 3.3 自…...

使用ROCm的HIP API向量加法程序
一、向量加法程序 Radeon Open Compute (ROCm) 是一个开源平台,用于加速高性能计算 (HPC) 和机器学习应用程序。它支持包括GPUs在内的多种硬件,并提供HIP (Heterogeneous-compute Interface for Portability) 作为CUDA代码的便捷转换工具。为了提供一个…...
Vue3---基础7(Props)
props,用于给子组件传递父组件的值的方法 代码示例: 父组件 <template><Text1 :list"personList"/> </template><script lang"ts" setup namae"App">import Text1 from ./components/text2.vu…...

第一节:什么是操作系统
什么是操作系统 一、一台计算机的组成部分1、计算机能干啥2、谈谈计算机硬件 二、什么是操作系统三、学习操作系统的层次 一、一台计算机的组成部分 如下图所示: 这就是就是构成一台计算机的组成部分 1、计算机能干啥 ∙ \bullet ∙计算机是我们专业吃饭的家伙&a…...

Day:007(1) | Python爬虫:高效数据抓取的编程技术(scrapy框架使用)
Scrapy的介绍 Scrapy 是一个用于抓取网站和提取结构化数据的应用程序框架,可用于各种有用的应用程序,如数据挖掘、信息处理或历史存档。 尽管 Scrapy 最初是为网络抓取而设计的,但它也可用于使用API提取数据或用作通用网络爬虫。 Scrapy的优势…...
Echarts使用dataTool写可自定义横坐标的盒须图(箱线图)
在vue2中的完整盒须图组件代码 可自适应浏览器窗体变化,可自定义横坐标,无需写箱线图数据处理逻辑。dataTool是echarts自带的,无需额外安装,只要引入。 <template><span><div ref"BoxPlotChart" id&qu…...

SpringBoot编写一个SpringTask定时任务的方法
1,在启动类上添加注解 EnableScheduling//开启定时任务调度 2, 任务(方法)上也要添加注解: Scheduled(cron " 0 * * * * ? ") //每分钟执行一次 域: 秒 分 时 日 月 周 (年&#…...

【Qt编译】ARM环境 Qt5.14.2-QtWebEngine库编译 (完整版)
ARM 编译Qt5.14.2源码 1.下载源码 下载Qt5.14.2源代码(可根据自己的需求下载不同版本) 下载网站:https://download.qt.io/new_archive/qt/5.14/5.14.2/single/ 2.相关依赖(如果需要的话) 先参考官方文档的需求进行安装: 官方…...

vue简单使用二(循环)
目录 属性绑定 if判断: for循环: 属性绑定 代码的形式来说明 三元表达式的写法: if判断: for循环: 完整代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"…...

JavaScript入门--变量
JavaScript入门--变量 一、JS变量二、变量命名三、常量四、局部变量 一、JS变量 定义变量a, b, c,并输出到控制台。 var a 1; var b 13.14; var c hello Js;console.log(a, b, c) //console.log()语句用于输出结果到控制台,类似python的print语句…...

给自己的机器人部件安装单目摄像头并实现gazebo仿真功能
手术执行器添加摄像头 手术执行器文件夹surgical_new内容展示如何添加单目摄像头下载现成的机器人环境文件启动仿真环境 手术执行器文件夹surgical_new内容展示 进入src文件夹下选择进入vision_obliquity文件夹 选择launch 有两个可用gazebo中rviz展示的launch文件࿰…...

用AI的视角看世界
前言 2024年将是Ai人工智能在各个行业垂直领域发展的元年。 随着2022年11月openai 的大语言模型chatgpt3.5的诞生,已经预示着互联网时代,移动互联网时代即将迎来新的变革,也预示着web3.0和元宇宙更近了一步。 回顾历史,互联网的…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...