解构赋值

2023-10-26

解构赋值是一种表达式,允许您使用数组或对象,将可迭代对象的值或属性分配给变量。解构赋值能让我们用更简短的语法进行多个变量的赋值,大大的减少了代码量。解构表达式有两种:array和object。

1)数组

E6之前,我们可以这种形式将数组的内容赋值给多个变量:
var Array = [1, 2, 3];
var a = Array[0];
var b = Array[1];
var c = Array[2];
ES6中,我们可以通过数组解构语法,在一行语句里完成上述操作。
let Array = [1, 2, 3];
let a, b, c;
[a, b, c] = myArray;
//简写
let [a, b, c] = [1, 2, 3];
console.log(a,b,c)//1,2,3
常用方法…
//忽略数组中某些值
let [a, , b] = [1, 2, 3];
console.log(a,b);//1,3
//使用展开语法
let [a, ...b] = [1, 2, 3, 4, 5, 6];
console.log(a);//1
console.log(b);//2,3,4,5,6
//跳过数组中的部分值
let [a, , ,...b] = [1, 2, 3, 4, 5, 6];
console.log(a);//1
console.log(b);	//4,5,6
//默认参数值
let [a, b, c = 3] = [1, 2];
console.log(c); // "3”
//嵌套数组
let [a, b, [c, d]] = [1, 2, [3, 4]]
//作为函数参数
function fun([a, b, c = 3]) {
    console.log(a, b, c); // "1 2 3"
}
fun([1, 2]);

1)对象

ES6之前我们可以这样把对象的属性赋值给多个变量
var object = {name : "sutu", age : 18};
var name = object.name;
var age = object.age;
在ES6里,我们可以使用对象解构表达式,在单行里给多个变量赋值
let object = {name : "sutu", age : 23};
let {name,age}=object
console.log(name,age)//sutu,23
常用方法
//默认参数值
let {a, b, c = 3} = {a: "1", b: "2"};
console.log(c); // "3”
//在解构对象时变量名支持表达式计算
let {["first"+"Name"]: x} = { firstName: "sutu" };
console.log(x); //"sutu”
//嵌套对象
let {name, otherInfo: {age}} = {name: "sutu", otherInfo: {age:23}};
console.log(name, age); //sutu 23
//作为函数参数
function fun({name = 'sutu', age = 23, profession ="Designer"} = {}){
    console.log(name, age, profession); // "John 23 Designer"
}
fun({name: "John", age: 23});
其他
//获取字符串的长度
var {length}='sutu';
console.log(length);//4
//拆分字符串
var [a,b,c,d]='贾赫最帅';
console.log(a,b,c,d) // 输出:贾 赫 最 帅
//交换变量
let x = 1;
let y = 2;
[x, y] = [y, x];
//遍历Map结构
var map = new Map();
map.set('first', 'hello');
map.set('second', 'world');
for (let [key, value] of map) {
    console.log(key + " : " + value);
}
//加载指定模块的方法(开发常用)
import { fun1,fun2 } from '../../../'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解构赋值 的相关文章

随机推荐

  • linux操作系统管理-主机重启不能能启动分析(nfs)

    问题概述 2个节点rac集群 节点1 采用nfs方式共享 backup 目录 节点2进行mount 2个节点分别重启 发现节点1能够起来 节点2不能启动 通过分析发现 节点1 nfs服务未启动 导致节点2不能启动 将节点1 的nfs服务启动
  • 华为OD机试 - 高效的任务规划(Java)

    题目描述 你有 n 台机器 编号为 1 n 每台都需要完成一项工作 机器经过配置后都能独立完成一项工作 假设第 i 台机器你需要花 Bi 分钟进行设置 然后开始运行 Ji 分钟后完成任务 现在 你需要选择布置工作的顺序 使得用最短的时间完成
  • table表头固定,内容滚动

    最近接到一个需求 要thead表头固定 tbody内容实现滚动 简单 给tbody加高度就行了 什么 竟然不行失败了 既然无法限制tbody本身的高度 那就给它套一个div 限制div的高度 让tbody在div里面滚就好了 但是 tabl
  • linux中wget命令失败解决方法

    问题描述 执行下面的代码 wget https shapenet cs stanford edu media indoor3d sem seg hdf5 data zip 出现下面的错误提示 正在解析主机 shapenet cs stanf
  • 正版rust进去闪退_Tomcat运行startup.bat时,闪退,或者说直接退出——之解决方法...

    最近刚开始学Java EE 在部署Web应用的时候 需要Tomcat服务器 我们知道Tomca是一个容器 用来部署应用的 在使用的时候 需要在安装目录 bin里找到startup bat文件和shutdown bat文件 用于启动和关闭To
  • C语言二分查找法

    二分查找法 从一个有序数组中找到一个数 不管是升序还是降序 思路 先从中间找 之后依次截半查找 比如从1 2 3 4 5中找到4 先找中间数3 发现4小那么取3与5最中间的数4 找到了 如果是1 2 3 4找3 先找下标为 0 3 2 就是
  • AD20/Altium designer——如何对线宽进行设置、布线过程中快速改线宽的方法

    1 设计 规则 2 线宽设置 首选宽度即 布线时的 默认线宽 3 布线过程中改线宽 连线过程中按 Tab键 打开布线属性 直接 输入线宽 后 回车键 即可
  • 计算机学习路线及java图书参考

    学习路线图LIVE地址 1 科普 浪潮之巅 2 编程语言 C结构化的编程语言 java面向对象的语言 JavaScript Python动态编程语言 Headfirst Python 3 数学 高等数学 离散数学 线性代数 线性代数及其应用
  • GMAC & PHY介绍

    1 1PHY接口发展 1 MII支持10M 100Mbps 一个接口由14根线组成 它的支持还是比较灵活的 但是有一个缺点是因为它一个端口用的信号线太多 参考芯片 DP83848 DM900A 该芯片内部集成了MAC和PHY接口 DP838
  • 软件测试基础----缺陷

    软件测试基础 缺陷 缺陷的定义 产生缺陷的原因 缺陷的类型 缺陷的严重程度 缺陷的修复优先级 缺陷的状态 缺陷的来源 缺陷的根源 缺陷的识别 缺陷的报告 缺陷编写准则 缺陷描述规则 缺陷的严重程度和优先级与什么关系 缺陷的定义 软件未实现产
  • 解决WIN10无法安装“无法验证此驱动发布者”的USB驱动的办法

    安装小米助手和MiPhone刷机工具时 使用Windows 10的朋友可能遇到小米驱动安装不上或者遇到驱动程序签名问题 下载官方的驱动包有可能无法解决 我之前遇到过 今天又遇到了 现在写下这个问题 供以后遇到的朋友查看 下面 我们开始 1
  • ASCLL编码详解,ASCLL编码对照表

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 ASCLL编码是一套基于拉丁字母的字符编码 共收录了128个字符 0 31及127 共33个 是控制字符 不在文本中显示 比如
  • 使用Sunny-Ngrok进行内网穿透

    文章目录 1 进入 Ngrok官网 http www ngrok cc 先注册账号并登录 2 下载 Sunny Ngrok 客户端 有不同的系统版本 3 编写SpringBoot项目进行测试 4 外网访问本地服务 为什么使用Sunny Ng
  • 学生信息管理系统代码全篇

    学生信息管理系统 include
  • centos8重启网卡命令nmcli

    重载所有ifcfg或route到connection 不会立即生效 nmcli c reload ifcfg xxx 1 重载指定ifcfg或route到connection 不会立即生效 nmcli c load etc sysconfi
  • QT获取顶级窗口指针并不是准确的顶级窗口指针解决办法

    在QT中我们可以通过topLevelWidget 函数获取顶级窗口指针 但是获取到的顶级窗口指针并不是该窗口创建的时候的使用的顶级窗口指针 语句如下 MainWindow parentWidget1 MainWindow topLevelW
  • 344.Reverse String

    class Solution public string reverseString string s string strReverse s for int n s size 1 n gt 0 n strReverse s size 1
  • mysql存储过程中使用游标及注意事项

    用户变量一般以 开头 作用于全局范围 局部变量需用 declare 定义格式为 declare 变量名 数据类型 default value mysql 数据类型有 int float date varchar length 等 声明的顺序
  • 声笔码6.00版使用指南

    声笔码6 00版使用指南 声笔码发明人兼设计人 戴石麟 电邮 sbxlm 126 com 一 声笔码简介 1 声笔码6 00版的新特性 与声笔码5 00版相比 声笔码6 00版具有下面一些新的特性 1 对笔画的表示方式进行了调整 原来是用字
  • 解构赋值

    解构赋值是一种表达式 允许您使用数组或对象 将可迭代对象的值或属性分配给变量 解构赋值能让我们用更简短的语法进行多个变量的赋值 大大的减少了代码量 解构表达式有两种 array和object 1 数组 E6之前 我们可以这种形式将数组的内容