文章目录

  • JavaScript 解构
  • 数组解构
  • 分配默认值
  • 交换变量
  • 跳过项
  • 将剩余元素分配给单个变量
  • 嵌套解构赋值
  • 参考文档

    在本教程中,您将借助示例了解 JavaScript 解构赋值。

JavaScript 解构

    ES6 中引入的解构赋值可以轻松地将数组值和对象属性分配给不同的变量。例如,
    在 ES6 之前:

// assigning object attributes to variables
const person = {name: 'Sara',age: 25,gender: 'female'
}let name = person.name;
let age = person.age;
let gender = person.gender;console.log(name); // Sara
console.log(age); // 25
console.log(gender); // female

    来自 ES6:

// assigning object attributes to variables
const person = {name: 'Sara',age: 25,gender: 'female'
}// destructuring assignment
let { name, age, gender } = person;console.log(name); // Sara
console.log(age); // 25
console.log(gender); // female

    注意:名称的顺序在对象解构中无关紧要。
    例如,您可以将上述程序编写为:

let { age, gender, name } = person;
console.log(name); // Sara

    注意:在解构对象时,应该使用与相应对象键相同的变量名称。
    例如,

let {name1, age, gender} = person;
console.log(name1); // undefined

    如果要为对象键分配不同的变量名称,可以使用:

const person = {name: 'Sara',age: 25,gender: 'female'
}// destructuring assignment
// using different variable names
let { name: name1, age: age1, gender: gender1 } = person;console.log(name1); // Sara
console.log(age1); // 25
console.log(gender1); // female

数组解构

    您也可以用类似的方式执行数组的解构。例如,

const arrValue = ['one', 'two', 'three'];// destructuring assignment in arrays
const [x, y, z] = arrValue;console.log(x); // one
console.log(y); // two
console.log(z); // three

分配默认值

    您可以在使用解构时为变量指定默认值。例如,

let arrValue = [10];// assigning default value 5 and 7
let [x = 5,  y = 7] = arrValue;console.log(x); // 10
console.log(y); // 7

    在上述程序中,arrValue 只有一个元素。因此,

  • x 变量将是 10
  • y 变量采用默认值 7

    在对象解构中,可以以类似的方式传递默认值。例如,

const person = {name: 'Jack',
}// assign default value 26 to age if undefined
const { name, age = 26} = person;console.log(name); // Jack
console.log(age); // 26

交换变量

    在此示例中,使用解构赋值语法交换了两个变量。

// program to swap variableslet x = 4;
let y = 7;// swapping variables
[x, y] = [y, x];console.log(x); // 7
console.log(y); // 4

跳过项

    您可以跳过数组中不需要的项,而无需将它们分配给局部变量。例如,

const arrValue = ['one', 'two', 'three'];// destructuring assignment in arrays
const [x, , z] = arrValue;console.log(x); // one
console.log(z); // three

    在上面的程序中,使用逗号分隔符 , 省略了第二个元素。

将剩余元素分配给单个变量

    您可以使用扩展语法将数组的剩余元素分配给变量…。例如,

const arrValue = ['one', 'two', 'three', 'four'];// destructuring assignment in arrays
// assigning remaining elements to y
const [x, ...y] = arrValue;console.log(x); // one
console.log(y); // ["two", "three", "four"]

    这里,one 被分配给 x 变量。其余的数组元素被分配给 y 变量。
    您还可以将对象其余的属性指定给单个变量。例如,

const person = {name: 'Sara',age: 25,gender: 'female'
}// destructuring assignment
// assigning remaining properties to rest
let { name, ...rest } = person;console.log(name); // Sara
console.log(rest); // {age: 25, gender: "female"}

    注意:具有扩展语法的变量不能有尾随逗号,。您可以将这个rest元素(带有扩展语法的变量)作为最后一个变量。
    例如,

const arrValue = ['one', 'two', 'three', 'four'];// throws an error
const [ ...x, y] = arrValue;console.log(x); // eror

嵌套解构赋值

    您可以对数组元素执行嵌套解构。例如,

// nested array elements
const arrValue = ['one', ['two', 'three']];// nested destructuring assignment in arrays
const [x, [y, z]] = arrValue;console.log(x); // one
console.log(y); // two
console.log(z); // three

    在这里,变量 y 和 z 被指定为嵌套元素 two 和 three。
    为了执行嵌套的解构赋值,必须将变量包含在数组结构中(通过将变量包含在 [] 中)。
    您还可以对对象属性执行嵌套解构。例如,

const person = {name: 'Jack',age: 26,hobbies: {read: true,playGame: true}
}
// nested destructuring
const {name, hobbies: {read, playGame}} = person;console.log(name); // Jack
console.log(read); // true
console.log(playGame); // true

    为了对对象执行嵌套的解构赋值,必须将变量封装在对象结构中(通过在 { } 内封装)。
    注意:解构赋值特性是在ES6中引入的。一些浏览器可能不支持使用解构赋值。访问Javascript 解构支持以了解更多信息。

    上一教程 :JS Set                                          下一教程 :JS Classes

参考文档

[1] Parewa Labs Pvt. Ltd. (2022, January 1). Getting Started With JavaScript, from Parewa Labs Pvt. Ltd: https://www.programiz.com/javascript/destructuring-assignment

JavaScript 解构赋值相关推荐

  1. exec 直接赋值_了解 JavaScript 解构赋值

    引言 数组和对象就像一个 "压缩包". 在需要单独引用数组中的某一个元素时,解构赋值可以很方便的完成这个任务,它可以将数组和对象整体 "解压缩" 到一堆变量上, ...

  2. [JavaScript]解构赋值详解

    文章目录 概念 数组解构 声明分别赋值 解构默认值 交换变量值 解构函数返回的数组 忽略返回值(或跳过某一项) 赋值数组剩余值给一个变量 嵌套数组解构 字符串解构 对象解构 基础对象解构 赋值给新变量 ...

  3. JavaScript解构赋值

    JS解构赋值 1. 什么是解构赋值 ? 2. 数组的解构赋值 2.1) 数组解构赋值的默认值 2.2) 数组解构赋值的应用 类数组中的应用 交换变量的值 3. 对象的解构赋值 3.1) 对象解构赋值的 ...

  4. 一篇文章搞懂JavaScript解构赋值

  5. 从Vuex的Actions中理解JavaScript的解构赋值

    导言: 本菜鸡在学习大佬的代码的时候看到有大佬在Vuex中的Actions用到了解构赋值.我对Actions和解构赋值都不算太了解.这篇文章就记录一下我对这两点的一个理解. Actions背景介绍 背 ...

  6. 【JavaScript 笔记】— 函数高级(变量作用域、解构赋值、方法、高阶函数、闭包、箭头函数、generator)

    JavaScript个人笔记 变量作用域 变量提升 全局对象 windows 命名空间 局部作用域 常量 解构赋值 使用场景 方法 apply 装饰器 高阶函数(Array) map reduce m ...

  7. JavaScript系列之解构赋值

    文章の目录 一.解构赋值概述 二.解构赋值语法 三.描述 四.示例[解构数组] 1.变量声明并赋值时的解构 2.如果解构不成功,变量的值为undefined. 3.变量先声明后赋值时的解构 4.默认值 ...

  8. JavaScript中的解构赋值(详细)

    解构赋值,就是快速的从对象或者数组中取出成员的一个语法方式     1.解构:将对象或者数组中的某个成员取出来     2.赋值:取出来的成员赋值给某一个变量 1.数组的解构      使用 [ ] ...

  9. JavaScript学习笔记 -- ES6学习(三) 变量的解构赋值

    1.解构赋值的定义 在ES6中,允许按照一定模式,从数组和对象中提取值(所谓解构),然后对变量进行赋值. var a = 1; var b = 2; var c = 3;//等价于var [a, b, ...

最新文章

  1. python找字符串_Python如何实现查找字符串
  2. python构造响应头_Python爬虫库requests获取响应内容、响应状态码、响应头
  3. 李沐老师的《动手学深度学习PyTorch》中的d2lzh_python包的安装
  4. ZooKeeper Java示例
  5. Union/find--不相交集类(并查集)
  6. Hive Union操作中的隐式转换
  7. 苹果发布2019年上半年透明度报告,收到数万条政府请求
  8. QT使用VLD检测内存泄漏
  9. python 读取远程服务器文件
  10. java转双层pdf文件_双层ofd转pdf时报错,带图片带坐标的那种格式
  11. 三菱Q系列ST、结构化编程、QD77定位以及转矩模式切换案例
  12. 孩子早餐要吃好,如何为孩子准备营养早餐
  13. 海思MPP模块视频缓冲池
  14. 《老鹰抓小鸡》将代表中国动画电影走出国门,走向世界,yyds❤
  15. Linux 虚拟鼠标,键盘 之一。
  16. 纪录片:《独立游戏大电影》
  17. Cocos2d-JS中ctor和Cocos2d-x中init的作用
  18. Oracle 查询临时表空间
  19. Decision Transformer环境安装
  20. 序列比对(四)——Smith-Waterman算法之仿射罚分

热门文章

  1. C语言——基础查漏补缺(三):谭浩强红书刷题笔记大杂烩
  2. php中的eval,php eval函数用法—-PHP中eval()函数小技巧 | 学步园
  3. 伊顿将在汉诺威国际商用车展上重点推介可持续商用车技术
  4. 剧透 报名 | 蚂蚁金服ATEC城市峰会·上海即将开幕
  5. C# 如何调用以管理员身份运行的cmd命令提示符
  6. C++ 文件读写 in out
  7. bzoj 4830: [Hnoi2017]抛硬币 [范德蒙德卷积 扩展lucas]
  8. [原创]国内大公司开源的安卓有关的库(持续更新中 )
  9. SP-API 刊登api-上传变体
  10. 2022年山东最新建筑施工架子工(建筑特种作业)模拟题库及答案