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 相关文章推荐
ASP Json Parser修正版
Dec 06 Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
jquery实现平滑的二级下拉菜单效果
Aug 26 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
Sep 19 Javascript
canvas实现图像截取功能
Feb 06 Javascript
详解用vue.js和laravel实现微信支付
Jun 23 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
web前端vue实现插值文本和输出原始html
Jan 19 Javascript
js实现京东秒杀倒计时功能
Jan 21 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 jQuery
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
javascript date格式化示例
2013/09/25 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
python读取html中指定元素生成excle文件示例
2014/04/03 Python
深入解答关于Python的11道基本面试题
2017/04/01 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
strlen的几种不同实现方法
2013/05/31 面试题
this关键字的作用
2016/01/30 面试题
结婚喜宴家长答谢词
2014/01/15 职场文书
学校门卫管理制度
2014/01/30 职场文书
师德演讲稿范文
2014/05/06 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
家长评语怎么写
2014/12/30 职场文书
公司员工管理制度
2015/08/04 职场文书