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 动态添加表格行 使用模板、标记
Oct 24 Javascript
ext 列表页面关于多行查询的办法
Mar 25 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
jQuery的css() 方法使用指南
May 03 Javascript
微信小程序 教程之模板
Oct 18 Javascript
从0开始学Vue
Oct 27 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
Nov 01 Javascript
AngularJS下$http服务Post方法传递json参数的实例
Mar 29 Javascript
小程序自定义组件实现城市选择功能
Jul 18 Javascript
Vue $emit $refs子父组件间方法的调用实例
Sep 12 Javascript
ES6 fetch函数与后台交互实现
Nov 14 Javascript
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
详解javascript遍历方式
2015/11/11 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
python生成指定长度的随机数密码
2014/01/23 Python
python difflib模块示例讲解
2017/09/13 Python
Python对切片命名的实现方法
2018/10/16 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python3 使用traceback定位异常实例
2020/03/09 Python
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
如何进行Linux分区优化
2016/09/13 面试题
《湘夫人》教学反思
2014/02/21 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书