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初学者的编写开发的七个细节
Jan 11 Javascript
javascript 表格内容排序 简单操作示例代码
Jan 03 Javascript
JavaScript中的原型prototype属性使用详解
Jun 05 Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 Javascript
JavaScript驾驭网页-获取网页元素
Mar 24 Javascript
Bootstrap CSS布局之列表
Dec 15 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
Feb 21 Javascript
微信小程序开发入门基础教程
Apr 19 Javascript
jQuery插件Validation表单验证详解
May 26 jQuery
如何解决vue2.0下IE浏览器白屏问题
Sep 13 Javascript
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
微信小程序换肤功能实现代码(思路详解)
Aug 25 Javascript
Ajax实现局部刷新的方法实例
前端学习——JavaScript原生实现购物车案例
JavaScript中关于预编译、作用域链和闭包的理解
JavaScript 去重和重复次数统计
Mar 31 #Javascript
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
vue3中的组件间通信
You might like
星际争霸秘籍
2020/03/04 星际争霸
星际原理概述
2020/03/04 星际争霸
用PHP连接Oracle数据库
2006/10/09 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python下如何让web元素的生成更简单的分析
2008/07/17 Python
Python实现的Kmeans++算法实例
2014/04/26 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
放飞中国梦演讲稿
2014/04/23 职场文书
数据保密承诺书
2014/06/03 职场文书
小学班级口号大全
2015/12/25 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
Golang: 内建容器的用法
2021/05/05 Golang