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 相关文章推荐
斜45度寻路实现函数
Aug 20 Javascript
jQuery中的常用事件总结
Dec 27 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
Dec 28 Javascript
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
Jul 26 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
Dec 06 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
Apr 06 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
实现easyui的datagrid导出为excel的示例代码
Nov 10 Javascript
Node.js调试技术总结分享
Mar 12 Javascript
JS随机排序数组实现方法分析
Oct 11 Javascript
微信小程序用户自定义模版用法实例分析
Nov 28 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
Apr 07 Javascript
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
PHP Array交叉表实现代码
2010/08/05 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Django权限机制实现代码详解
2018/02/05 Python
python反编译学习之字节码详解
2019/05/19 Python
利用python开发app实战的方法
2019/07/09 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
如何利用Python 进行边缘检测
2020/10/14 Python
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
电子商务专业求职信
2014/03/08 职场文书
股份合作协议书
2014/04/12 职场文书
保护地球的标语
2014/06/17 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
领导新年致辞2016
2015/07/29 职场文书