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中sort()方法的用法
Nov 04 Javascript
addRule在firefox下的兼容写法
Nov 30 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
jquery+php实现滚动的数字特效
Nov 29 Javascript
js返回顶部实例分享
Dec 21 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
angular2中Http请求原理与用法详解
Jan 11 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
微信小程序的线程架构【推荐】
May 14 Javascript
JS判断数组里是否有重复元素的方法小结
May 21 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 Javascript
Vue双向数据绑定(MVVM)的原理
Oct 03 Javascript
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
jQuery ui 1.7更新小结
2009/08/15 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
python自动化测试实例解析
2014/09/28 Python
20招让你的Python飞起来!
2016/09/27 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
简述 Python 的类和对象
2020/08/21 Python
python 5个实用的技巧
2020/09/27 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
自我反省检讨书
2014/01/23 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
法定代表人资格证明书
2014/09/11 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
自考生自我评价
2019/06/21 职场文书
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android