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使用数组编写图片无缝向左滚动
Dec 11 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
Sep 01 Javascript
Javascript数组Array基础介绍
Mar 13 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
Mar 14 Javascript
jQuery 弹出层插件(推荐)
May 24 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
Jun 06 Javascript
通过jquery实现页面的动画效果(实例代码)
Sep 18 Javascript
js实现登录验证码
Dec 22 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
javascript实现贪吃蛇小练习
Jul 05 Javascript
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
基于php 随机数的深入理解
2013/06/05 PHP
php获取错误信息的方法
2015/07/17 PHP
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
Python中的ceil()方法使用教程
2015/05/14 Python
matplotlib中legend位置调整解析
2017/12/19 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
django框架F&Q 聚合与分组操作示例
2019/12/12 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
高中毕业自我鉴定范文
2013/10/02 职场文书
个人培训自我鉴定
2014/03/28 职场文书
投资意向书
2014/07/30 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python