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 相关文章推荐
网络之美 JavaScript中Get和Set访问器的实现代码
Sep 19 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
Jun 05 Javascript
javascript常用经典算法实例详解
Nov 25 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
基于bootstrap插件实现autocomplete自动完成表单
May 07 Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 Javascript
返回函数的JavaScript函数
Jun 14 Javascript
AngularJS 入门教程之HTML DOM实例详解
Jul 28 Javascript
js实现抽奖效果
Mar 27 Javascript
js实现图片放大并跟随鼠标移动特效
Jan 18 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
Jul 30 Javascript
js+css3实现炫酷时钟
Aug 18 Javascript
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
php二分查找二种实现示例
2014/03/12 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
基于jquery的滑动样例代码
2010/11/20 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
使用Python实现博客上进行自动翻页
2017/08/23 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
学生社团文化节开幕式主持词
2014/03/28 职场文书
外语系毕业生求职自荐信
2014/04/12 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
开平碉楼导游词
2015/02/06 职场文书
护士实习自荐信
2015/03/06 职场文书
奖励申请报告范文
2015/05/15 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书