Javascript中的解构赋值语法详解


Posted in Javascript onApril 02, 2021

前言

首先在 ES6中引入的“解构赋值语法”允许把数组和对象中的值插入到不同的变量中。虽然看上去可能很难,但实际上很容易学习和使用。

解构赋值语法是一种 JS表达式。ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。通过解构赋值, 可以将属性/值从对象/数组中取出,赋值给其他变量。

在ES6解构赋值出现之前,我们需要为变量赋值的时候,只能直接指定值。

比如:

let a = 1;
let b = 2;
let c = 3;
let d = 4;
let e = 5;

数组解构非常简单。你所要做的就是为数组中的每个值声明一个变量。你可以定义更少的变量,而不是数组中的索引(即,如果你只想解处理前几个值),请跳过某些索引或甚至使用 REST 模式将所有剩余的值放到新数组中。

const nums = [ 3, 6, 9, 12, 15 ];
const [
 k,    // k = 3
 l,    // l = 6
 ,    // Skip a value (12)
 ...n   // n = [12, 15]
] = nums;

对象解构

对象解构与数组解构非常相似,主要区别是可以按名称引用对象中的每个key,从而创建一个有相同名称的变量。此外还可以将键解构为新的变量名,只解构所需的 key,然后用 rest 模式将剩余的 key 解构为新对象。

const obj = { a: 1, b: 2, c: 3, d: 4 };
const {
 a,       // a = 1
 c: d,      // d = 3
 ...rest     // rest = { b: 2, d: 4 }
} = obj;

嵌套解构

嵌套对象和数组可以通过相同的规则来进行解构。区别在于可以将嵌套 key 或值直接解构为变量,而不必将父对象存储在变量本身中。

const nested = { a: { b: 1, c: 2 }, d: [1, 2]};
const {
 a: {
  b: f,     // f = 1
  ...g     // g = { c: 2 }
 },
 ...h      // h = { d: [1, 2]}
} = nested;

高级解构

由于数组的行为与对象相似,所以可以通过使用索引作为对象解构分配中的 key,用解构分配语法从数组中获取特定值。用这种方法还可以得到数组的其他属性(例如数组的 length)。最后,如果解构后的值是 undefined,则还可以为解构过程中的变量定义默认值。

const arr = [ 5, 'b', 4, 'd', 'e', 'f', 2 ];
const {
 6: x,      // x = 2
 0: y,      // y = 5
 2: z,      // z = 4
 length: count, // count = 7
 name = 'array', // name = 'array' (not present in arr)
 ...restData   // restData = { '1': 'b', '3': 'd', '4': 'e', '5': 'f' }
} = arr;

总结

到此这篇关于Javascript中解构赋值语法的文章就介绍到这了,更多相关JS解构赋值语法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery 事件对象属性小结
Apr 27 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 20 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
详解javascript的变量与标识符
Jan 04 Javascript
vue.js实现价格格式化的方法
May 23 Javascript
es6系列教程_ Map详解以及常用api介绍
Sep 25 Javascript
angular2系列之路由转场动画的示例代码
Nov 09 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
对vue v-if v-else-if v-else 的简单使用详解
Sep 29 Javascript
又拍云 Node.js 实现文件上传、删除功能
Oct 28 Javascript
详解基于原生JS验证表单组件xy-form
Aug 20 Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 Javascript
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
Thinkphp多文件上传实现方法
2014/10/31 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
python实现Floyd算法
2018/01/03 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Python如何读取、写入JSON数据
2020/07/28 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
养生餐厅创业计划书范文
2014/03/26 职场文书
4s店活动策划方案
2014/08/25 职场文书
投标承诺函范文
2015/01/21 职场文书
垂直极限观后感
2015/06/08 职场文书
创业计划书之酒店
2019/08/30 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python
MySQL慢查询的坑
2021/04/28 MySQL