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 相关文章推荐
js前台分页显示后端JAVA数据响应
Mar 18 Javascript
JS模块与命名空间的介绍
Mar 22 Javascript
javascript操作css属性
Dec 30 Javascript
js动态删除div元素基本思路及实现代码
May 08 Javascript
JavaScript实现相册弹窗功能(zepto.js)
Jun 21 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
Sep 18 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
js放大镜放大购物图片效果
Jan 18 Javascript
jquery实时获取时间的简单实例
Jan 26 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
redux-saga 初识和使用
Mar 10 Javascript
vue实现百度语音合成的实例讲解
Oct 14 Javascript
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
Python是编译运行的验证方法
2015/01/30 Python
老生常谈进程线程协程那些事儿
2017/07/24 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
如何基于python测量代码运行时间
2019/12/25 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
通过实例解析python描述符原理作用
2020/01/22 Python
Python能做什么
2020/06/02 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
劲霸男装广告词改编版
2014/03/21 职场文书
幼儿园新年寄语
2014/04/03 职场文书
高质量“欢迎词”
2019/04/03 职场文书
商业计划书范文
2019/04/24 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python