JS中【解构赋值】知识点解读
解构赋值(Destructuring Assignment)是 JavaScript 中一种从数组或对象中提取数据的简便方法,可以将其赋值给变量。这种语法可以让代码更加简洁、清晰。下面我会详细讲解解构赋值的相关知识点。
1. 数组解构赋值
数组解构赋值允许你通过位置匹配的方式,将数组中的值赋给一组变量。
基本语法:
const [a, b, c] = [1, 2, 3];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
跳过元素:
你可以通过在数组解构中使用逗号跳过某些元素。
const [a, , c] = [1, 2, 3];
console.log(a); // 1
console.log(c); // 3
默认值:
当从数组中解构的变量未对应任何值时,你可以为其指定默认值。
const [a, b = 10] = [1];
console.log(a); // 1
console.log(b); // 10
交换变量值:
解构赋值使交换两个变量的值变得非常简单,无需借助临时变量。
let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a); // 2
console.log(b); // 1
2. 对象解构赋值
对象解构赋值允许你通过属性名称匹配的方式,将对象中的值赋给一组变量。
基本语法:
const person = { name: "Alice", age: 25 };
const { name, age } = person;
console.log(name); // Alice
console.log(age); // 25
重命名变量:
你可以在解构时将对象属性名重命名为不同的变量名。
const person = { name: "Alice", age: 25 };
const { name: n, age: a } = person;
console.log(n); // Alice
console.log(a); // 25
默认值:
与数组解构赋值类似,如果对象属性未定义或为 undefined,可以为其指定默认值。
const person = { name: "Alice" };
const { name, age = 30 } = person;
console.log(name); // Alice
console.log(age); // 30
嵌套对象解构:
你可以解构嵌套的对象,并将其赋值给相应的变量。
const person = {name: "Alice",address: {city: "Wonderland",zipcode: "12345"}
};const { name, address: { city, zipcode } } = person;
console.log(name); // Alice
console.log(city); // Wonderland
console.log(zipcode); // 12345
3. 函数参数解构
解构赋值在函数参数中也非常有用,特别是在处理具有多个选项的配置对象时。
数组参数解构:
function sum([a, b]) {return a + b;
}console.log(sum([1, 2])); // 3
对象参数解构:
function greet({ name, age }) {console.log(`Hello, ${name}. You are ${age} years old.`);
}greet({ name: "Alice", age: 25 }); // Hello, Alice. You are 25 years old.
函数参数的默认值:
你还可以为函数参数设置默认值。
function greet({ name = "Anonymous", age = 18 } = {}) {console.log(`Hello, ${name}. You are ${age} years old.`);
}greet(); // Hello, Anonymous. You are 18 years old.
4. 结合剩余参数与扩展运算符
解构赋值可以与剩余参数和扩展运算符结合使用,来处理数组或对象中未解构的部分。
数组的剩余参数:
const [first, ...rest] = [1, 2, 3, 4];
console.log(first); // 1
console.log(rest); // [2, 3, 4]
对象的扩展运算符:
const person = { name: "Alice", age: 25, city: "Wonderland" };
const { name, ...rest } = person;
console.log(name); // Alice
console.log(rest); // { age: 25, city: "Wonderland" }
总结
解构赋值是一种非常强大的语法特性,使得从数组和对象中提取数据变得更加简便和直观。通过理解和掌握这些用法,可以让你的 JavaScript 代码更加简洁和易读。
相关文章:
JS中【解构赋值】知识点解读
解构赋值(Destructuring Assignment)是 JavaScript 中一种从数组或对象中提取数据的简便方法,可以将其赋值给变量。这种语法可以让代码更加简洁、清晰。下面我会详细讲解解构赋值的相关知识点。 1. 数组解构赋值 数组解构赋值允许你通过位置…...
【Pyspark-驯化】一文搞懂Pyspark中对json数据处理使用技巧:get_json_object
【Pyspark-驯化】一文搞懂Pyspark中对json数据处理使用技巧:get_json_object 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 …...
第10章 无持久存储的文件系统 (1)
目录 前言 10.1 proc文件系统 10.1.1 /proc 内容 本专栏文章将有70篇左右,欢迎关注,查看后续文章。 前言 即存在于内存中的文件系统。如: proc: sysfs: 即/sys目录。 内容不一定是ASCII文本,可能是二进…...
如何把命令行创建python虚拟环境与pycharm项目管理更好地结合起来
1. 问题的提出 我在linux或windows下的某个目录如“X”下使用命令行的方式创建了一个python虚拟环境(参考文章),对应的目录为myvenv, 现在我想使用pycharm创建python项目myproject,并且利用虚拟环境myvenv,怎么办&…...
keepalived+lvs高可用负载均衡集群配置方案
配置方案 一、配置主备节点1. 在主备节点上安装软件2. 编写配置文件3. 启动keepalived服务 二、配置web服务器1. 安装并启动http服务2. 编写主页面3.配置虚拟地址4. 配置ARP 三、测试 服务器IP: 主负载均衡服务器 master 192.168.152.71备负载均衡服务器 backup 192…...
Azure OpenAI Swagger Validation Failure with APIM
题意:Azure OpenAI Swagger 验证失败与 APIM 问题背景: Im converting the Swagger for Azure OpenAI API Version 2023-07-01-preview from json to yaml 我正在将 Azure OpenAI API 版本 2023-07-01-preview 的 Swagger 从 JSON 转换为 YAML。 My S…...
haproxy高级功能配置
介绍HAProxy高级配置及实用案例 一.基于cookie会话保持 cookie value:为当前server指定cookie值,实现基于cookie的会话黏性,相对于基于 source 地址hash 调度算法对客户端的粒度更精准,但同时也加大了haproxy负载,目前此模式使用…...
XXL-JOB分布式定时任务框架快速入门
文章目录 前言定时任务分布式任务调度 1、XXL-JOB介绍1.1 XXL-JOB概述1.2 XXL-JOB特性1.3 整体架构 2、XXL-JOB任务中心环境搭建2.1 XXL-JOB源码下载2.2 IDEA导入xxljob工程2.3 初始化数据库2.4 Docker安装任务管理中心 3、XXL-JOB任务注册测试3.1 引入xxl-job核心依赖3.2 配置…...
直流电机及其驱动
直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。 直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作 TB6612是一款双…...
Java-判断一个字符串是否为有效的JSON字符串
在 Java 中判断一个字符串是否为有效的 JSON 字符串,可以使用不同的库来进行验证。常见的库 包括 org.json、com.google.gson 和 com.alibaba.fastjson 等。这里我将展示如何使用 com.alibaba.fastjson 库来实现一个简单的工具类,用于判断给定的字符串…...
FPGA开发板的基本知识及应用
FPGA开发板是一种专门设计用于开发和测试现场可编程门阵列(Field-Programmable Gate Array, FPGA)的硬件平台。FPGA是一种高度可配置的集成电路,能够在制造后被编程以执行各种数字逻辑功能。FPGA开发板通常包含一个FPGA芯片以及一系列支持电路和接口,以便…...
JVM知识总结(性能调优)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 性能调优 何时进行JVM调优? 遇到以下情况,…...
基于Ascend C的Matmul算子性能优化最佳实践
矩阵乘法是深度学习计算中的基础操作,对于提升模型训练和推理速度至关重要。昇腾AI处理器是一款专门面向AI领域的AI加速器,其AI Core采用达芬奇架构,以高性能Cube计算引擎为基础,针对矩阵运算进行加速,可大幅提高单位面…...
SQL注入之EVAL长度限制突破技巧
要求: PHP Eval函数参数限制在16个字符的情况下 ,如何拿到Webshell? widows小皮环境搭建: 使用phpstudy搭建一个网站。 随后在该eval文件夹下创建一个webshell.php文件,并在其输入代码环境 解题思路: 通…...
稀疏注意力:时间序列预测的局部性和Transformer的存储瓶颈
时间序列预测是许多领域的重要问题,包括对太阳能发电厂发电量、电力消耗和交通拥堵情况的预测。在本文中,提出用Transformer来解决这类预测问题。虽然在我们的初步研究中对其性能印象深刻,但发现了它的两个主要缺点:(1)位置不可知性:规范Tran…...
详谈系统中的环境变量
目录 前言1. 指令背后的本质2. 环境变量背后的本质3. 环境变量到底是什么4. 命令行参数5. 本地变量 与 内置命令6. 环境变量的相关命令 前言 相信在 it 行业学习或者工作的小伙伴们,基本都配置过环境变量(windows环境下),如果你也…...
RAG与LLM原理及实践(11)--- Milvus hybrid search 源码分析及思想
目录 背景 hybrid search 源码分析 WeightedRanker 源码 hybrid search 核心 参数详解 基本入参 扩展入参 aysnc方式代码调用案例 说明 源码逻辑 prepare 调用过程 stub 调用结果 stub 调用过程 blocking 与 async 调用方式 深入内部core weightedRanker 的ch…...
JavaScript模拟空调效果
JavaScript模拟空调效果https://www.bootstrapmb.com/item/15074 在JavaScript中模拟空调效果主要依赖于前端界面的交互和状态变化,因为实际的温度调节、风扇速度调整等硬件操作无法直接通过JavaScript在浏览器中实现。不过,我们可以通过JavaScript来模…...
14.2 Pandas数据处理
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...
python学习7---多进程
一、介绍 多进程是指在同一程序中创建多个独立的进程来执行任务。每个进程都有自己独立的内存空间,相互之间不干扰。 因为GIL锁的存在,对于CPU密集型任务(例如计算密集型操作),使用多进程可以提高程序的效率。 优点&am…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
