解构赋值及其原理

解构赋值(Destructuring Assignment)是一种在编程语言中将复杂数据结构(如数组和对象)拆解成更小的部分并分配给变量的技术。它在许多编程语言中都有支持,包括 JavaScript。

JavaScript 中的解构赋值允许您从数组或对象中提取值,并将这些值赋给变量,从而可以更轻松地访问和使用数据。以下是解构赋值的一些基本用法和原理:

1、数组解构赋值:

const [a, b] = [1, 2];
console.log(a); // 输出 1
console.log(b); // 输出 2

在上面的例子中,我们从数组 [1, 2] 中解构出了值 12,然后将它们分别赋给变量 ab

2、对象解构赋值:

const { x, y } = { x: 1, y: 2 };
console.log(x); // 输出 1
console.log(y); // 输出 2

在这个例子中,我们从对象 { x: 1, y: 2 } 中解构出了属性 xy 的值,然后将它们分别赋给变量 xy

3、默认值:您还可以为解构赋值的变量指定默认值,以处理可能不存在的属性或元素。

const { a = 1, b = 2 } = { a: 3 };
console.log(a); // 输出 3
console.log(b); // 输出 2
  1. 在这个例子中,由于对象中没有 b 属性,因此 b 变量的值被设置为默认值 2

解构赋值的原理是根据左边的模式(pattern)匹配右边的值,并将匹配的值赋给相应的变量。它适用于数组和对象,可以嵌套使用,还可以用于函数参数中。

需要注意的是,解构赋值是一种语法糖,它实际上是调用了对象的 Symbol.iterator 方法(对于数组)或 Symbol.iteratorSymbol.unscopables 方法(对于对象),然后按照匹配规则将值分配给变量。这个过程是在后台自动进行的,使得解构赋值变得非常方便和灵活。因此,解构赋值是一种强大的工具,用于简化代码和提高代码的可读性。

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

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

相关文章

Java 内存模型(JMM)

1.概述 JMM,全称 Java Memory Model,中文释义Java内存模型 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C程序开发程序员那样为每一个 new 操作去写对应的 delete/free操作,不容易出现内存泄漏和内…

rabbitmq队列卡住的一种情况(webservice接口超时)

一、前言 测试环境发现有一个操作一直没有进行,排查后发现是rabbitmq队列卡住了。 接收的后端代码已经加了完备的try-catch了,但是队列仍然卡住了,并且日志没有报错,就很奇怪。 二、排查过程 1.找到RabbitListener&#xff0c…

根据保存的IQ信号解析出频谱视图

根据保存的IQ信号,可以通过一系列数字信号处理技术解析出频谱视图。下面是一种常见的方法: IQ信号预处理:首先,对保存的IQ信号进行预处理,例如进行低通滤波以消除高频噪声。 采样率转换:根据需要得到的频谱…

LeetCode 2596. 检查骑士巡视方案【数组,模拟】1448

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

LeetCode 53. 最大子数组和

题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 使用动态规划的方法进行解决,我们创建一个dp表,用来记录以该下标为结尾的最大子数组。然后每次存dp表的时候,进行取最大值。最终返回最大值。 由…

二叉排序树(BST)的算法分析以及基本操作(结点的查询,插入,删除)

1.二叉排序树的定义 二叉排序树,又称二叉查找树(BST,Binary Search Tree) 默认不允许两个结点的关键字相同。 1.二叉排序树的性质: 任意一棵二叉排序树的子树的结点大小都满足“左小右大”。 左子树上所有结点的关键字均小于根结点的关键…

基于Python和mysql开发的智慧校园答题考试系统(源码+数据库+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python和mysql开发的智慧校园答题考试系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都…

二分算法(超详细)

快速排序 题目1-整数二分-数的范围 给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。 如果数组中不存在该元素,则返回 -1 -1。…

【动手学深度学习】--长短期记忆网络LSTM

文章目录 长短期记忆网络LSTM1.门控记忆元1.1输入门、忘记门、输出门1.2候选记忆元1.3记忆元1.4隐状态 2.从零实现2.1加载数据集2.2初始化模型参数2.3定义模型2.4 训练与预测 3.简洁实现 长短期记忆网络LSTM 学习视频:长短期记忆网络(LSTM)【…

redis 常用数据结构2

目录 list LPUSH LRANGE LPUSHX RPUSH RPUSHX LPOP RPOP LINDEX LINSERT LLEN LREM LTRIM LSET BLPOP / BRPOP 编码方式 set SADD SMEMBERS SISMEMBER SPOP SCARD SRANDMEMBER SMOVE SREM SINTER SINTERSTORE SUNION SUNIONSTORE SDIFF SDIFFSTO…

leetcode面试题:交换和(三种方法实现)

交换和: 给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元…

白鲸开源 X SelectDB 金融大数据联合解决方案公布!从源头解决大数据开发挑战

业务挑战与痛点 随着互联网技术的发展、云计算技术的成熟、人工智能技术的兴起和数字化经济的崛起,数据已成为企业的核心资产。在金融行业中,数字化已成为了支撑各类业务场景的核心力量,包括个人理财、企业融资、股票交易、保险理赔、贷款服…

如何构建一个简单的前端框架

先让我来解释一下什么是前端框架。所谓的前端框架&#xff0c;就是一种能够让我们避免去写常规的HTML和JavaScript代码 <p id"cool-para"></p> <script>const coolPara Test;const el document.getElementById(cool-para);el.innerText coolPa…

TensorFlow 02(张量)

一、张量 张量Tensor 张量是一个多维数组。与NumPy ndarray对象类似&#xff0c;tf.Tensor对象也具有数据类型和形状。如下图所示: 此外&#xff0c;tf.Tensors可以保留在GPU中。TensorFlow提供了丰富的操作库 (tf.add&#xff0c;tf.matmul,tf.linalg.inv等)&#xff0c;它们…

文字点选验证码识别(下)-训练一个孪生神经网络模型

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 文章中没有代码,只有过程思路,请大家谨慎订阅。…

HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)

一、介绍 溪村小镇是一款展示溪流背坡村园区风貌的应用&#xff0c;包括园区内的导航功能&#xff0c;小火车行车状态查看&#xff0c;以及各区域的风景展览介绍&#xff0c;主要用于展示HarmonyOS的ArkUI能力和动画效果。具体包括如下功能&#xff1a; 打开应用时进入启动页&a…

哪种IP更适合你的数据抓取需求?

程序员大佬们好&#xff01;今天我要和大家分享一个关于数据抓取的话题&#xff0c;那就是Socks5爬虫ip和动态IP之间的比较。在进行数据抓取时&#xff0c;选择适合自己需求的工具和技术是非常重要的。Socks5爬虫ip和动态IP都是常见的网络工具&#xff0c;它们在数据抓取方面都…

Spring Boot 中的参数验证和自定义响应处理,使用 @Valid 注解

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Spring Boot 中的参数验证和自定义响应处理&#xff0c;使用 Valid 注解…

【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)

<template><div :class"$options.name"><div class"sg-head">接口代码生成工具</div><div class"sg-container"><div class"sg-start "><div style"margin-bottom: 10px;">接口地…

如何进行函数的递归调用?

函数的递归调用是一种强大而常见的编程技巧&#xff0c;它允许函数在自身内部调用自己。递归在解决问题的分而治之策略中非常有用&#xff0c;可以将大问题分解为更小的、相同或类似的子问题&#xff0c;然后通过逐步解决这些子问题来解决原始问题。在本文中&#xff0c;我将详…