ES6阮一峰读书笔记第二章变量的解构赋值

article/2025/8/25 15:30:15

变量的解构赋值

一、数组的解构赋值
从数组和对象中提取值,对变量进行赋值,这被称为解构(即等式右边必须为数组而非undefined,null,NAN)在这里插入图片描述
从本质而言,这种写法也叫做模式匹配,只要左右两边的模式相同,左边的变量就会赋予右边给的值
例:
在这里插入图片描述
如果解构不成功,变量的值就等于undefined。在这里插入图片描述

不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。
在这里插入图片描述如果等号的右边不是数组
在这里插入图片描述
等号右边的值,要么转为对象以后不具备 Iterator 接口(前五个表达式),要么本身就不具备 Iterator 接口(最后一个表达式)

默认值
解构赋值允许指定默认值。
在这里插入图片描述
注:只有当等式右边的数组成员必须为undefined,默认值才会生效
在这里插入图片描述
默认值可以引用解构赋值的其他变量在这里插入图片描述

二、对象的解构赋值
在这里插入图片描述
与数组不同的是,数组必须按照索引的顺序依次取值,而对象的属性没有顺序,但赋值时属性必须和对象同名
在这里插入图片描述

对象的解构赋值,可以很方便地将现有对象的方法,赋值到某个变量。
在这里插入图片描述
解构也可以用于嵌套结构的对象。在这里插入图片描述
对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

对象的解构赋值可以取到继承的属性在这里插入图片描述
对象的结构赋值需要注意以下几点
1、如果将一个已经申明的变量结构赋值时在这里插入图片描述

三、字符串的解构赋值
字符串解构赋值时,等式右边的字符串被转换成了一个类似数组的对象。
在这里插入图片描述
用途方法:
(1)交换变量的值
在这里插入图片描述
(2)从函数返回多个值
函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。
在这里插入图片描述
(3)函数参数的定义
解构赋值时函数参数可以用数组,或对象来表示一组参数
在这里插入图片描述
(4)提取 JSON 对象数据
在这里插入图片描述
(5)、遍历 Map 结构
任何部署了 Iterator 接口的对象,都可以用for…of循环遍历。在这里插入图片描述
如果只想获取键名,或者只想获取键值,可以写成下面这样。

// 获取键名


http://chatgpt.dhexx.cn/article/aMnWTrbK.shtml

相关文章

ES6阮一峰读书笔记第三章字符串的拓展

1、字符串的unicode表示 ES6中,可以用"\uxxxx"表示一个字符 "\u0061" // "a"范围:\u0000~\uFFFF,若超出这个范围则必须用双字节来表示 如果超出了字符串的表示范围像("\u20BB7"),系统默…

【ES6】阮一峰ES6学习(六) Proxy

Proxy 1. 前言2. 使用3. Proxy 实例方法1. get()方法2. set()方法3. apply()方法 4. 为什么要存在Proxy?两者对比 1. 前言 es6中全新设计了一个叫Proxy的类型,Proxy这个词的原意是代理,用在这里表示由它来”代理“某些操作,可以译为”代理器…

【ES6】阮一峰ES6学习之Promise(一)

Promise 一、含义1. 概念2. 特点3. 基本用法4. 为什么要用 Promise1. 指定回调函数的方式更加灵活2. 支持链式调用,可以解决回调地狱的问题用Promise实现Ajax 二、Promise的使用1. Promise 构造函数:Promise(executor) {}2. Promise.prototype.then 方法…

rtthread_scons简介

env工具基本构成 命令行环境Cmder: Cmder是一款免费的DOS系统仿真器,体积小巧,界面清爽,支持多标签操作,兼容dos原有的指令。系统配置工具menuconfig: 即linux menuconfig的python实现版本,使用方法与linux menuconfi…

LWIP:RTThread + LWIP

1. 序言 今天跟大家简单分享 LWIP RTThread 的移植注意事项,记得以前刚接触 LWIP 那会,是跟着野火的教程一起走,而大部分 LWIP 移植教程都是以 freeRTOS 为主,本着支持 RTThread 的想法,在当时就想着移植 LWIP 到 RT…

基于rt thread smart构建EtherCAT主站

我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开。rt thread smart的教程可以参考官网资料,这里就不多阐述了。 用的是100ask的imx6ull开发板,雷赛的dm3e-5…

Rtthread线程源码分析

Rtthread线程源码分析 /*** This function will create a thread object and allocate thread object memory* and stack.** param name the name of thread, which shall be unique* param entry the entry function of thread* param parameter the parameter of thread ent…

rtthread套娃移植

和大家分享下将基于rtthread的项目移植到其他平台的经验。 背景 最近做了一个物联网项目移植。原先的项目使用的硬件平台为stm32f401sim800c(mcu 2G modem),软件平台为rtthread 4.0.1。移植到的新平台为BC25(nb modem),软件平台为BC25 opencpu sdk&am…

关于RT thread系统节拍时钟的配置

关于RT thread系统节拍时钟的配置 -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍rt_tick(划重点)。 系统节拍 系统节拍是特定的周期中断,可以…

rtthread学习

RT-Thread 内核实现与应用开发实战指南 1、数据类型rtdef.h 中的数据类型 在裸机系统中,他们统统放在一个叫栈的地方,栈是单片机 RAM 里面一段连续的内存空间,栈的大小一般在启动文件或者链接脚本里面指定, 最后由 C 库函数_m…

Rtthread 内存管理

Rtthread 堆内存管理 #define HEAP_MAGIC 0x1ea0 struct heap_mem {/* magic and used flag */rt_uint16_t magic; //魔数,固定值rt_uint16_t used; //使用标记,1为该内存已经被使用rt_size_t next, prev; //双向链表偏移 }; #define MIN_SIZE 12 //一…

RT-Thread学习

一、入门 RT-Thread官网  官网文档   Rt-thread学习文档  RT-Thread官方bilibili视频号   GD32官网 教你动手移植RT-Thread到国产MCU    如何移植RT-Thread到GD32单片机上(非studio版) 东方青讲RT-Thread  RT-Thread内核入门指南 RT-Thread…

RT Thread之ADC电压读取

官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/adc/adc 一、配置步骤: 1、用cubemx配置底层; 2、cubemx配置好的文件替换之前的配置文件; 3、修改Kconfig文件&…

rtthread mqtt

rtthread 以太网 (LAN8720A) 基于以太网的应用mqtt,在**rtthread 以太网 (LAN8720A)**中已经实现了tcp/ip通信正常,接下需要启用mqtt模块, 嵌入式mqtt设备 rtthread 启用mqtt 在rtthread中田间 pahomqtt 软件包,并右键详细配置…

【RTThread】修改Finsh打印串口波特率

这里需要注意得是一定要在hw_board_init初始化完成之后修改串口波特率。 /* 串口设备句柄 */static rt_device_t uart_device RT_NULL;/* 查找系统中的串口设备 */uart_device rt_device_find("uart1"); // 这里/* 串口配置结构体,使用serial.h的宏定义…

RT Thread之 Uart2 操作

官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart 通过前面的学习,基本上RT Thread操作步骤都是,先配置单片机底层,然后再通过应用层映射到底层,最…

rtthread

链表 初始化双向链表 rt_inline void rt_list_init(rt_list_t *l) {l->next l->prev l; }插入 rt_inline void rt_list_insert_after(rt_list_t *l, rt_list_t *n) {l->next->prev n;n->next l->next;l->next n;n->prev l; }在NODE1后面插入节…

RT Thread根据开发板制作BSP方法

之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录。用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thread nano不一样,具体区别见 RT Thread官网&#xf…

rtthread开关中断

1 rtthread开关中断函数(cortex-m) /** rt_base_t rt_hw_interrupt_disable();*/ .global rt_hw_interrupt_disable .type rt_hw_interrupt_disable, %function rt_hw_interrupt_disable:MRS r0, PRIMASKCPSID IBX LR/** void rt_hw_interrupt_enable(rt_base_t le…

RTThread入门

RT-Thread入门 1.初识RT-Thread 嵌入式系统是一种完全嵌入在装置或设备内部,为满足特定需求而设计的计算机系统,譬如生活中常见的嵌入式系统就有:电视机顶盒、路由器、电冰箱、微波炉与移动电话等。 嵌入式操作系统是应用于嵌入式系统的软…