这篇文章主要介绍了ES6中Javascript解构是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
ES6中的解构特性能让我们从对象(对象)或者是数组(数组)中取值的时候更方便,同时写出来的代码在可读性方面也更强。之前接触过python语言的小伙伴应该对这个不会陌生,这个特性早已在python中实现了。在python中,我们可以通过下面的代码来取值
lst=(3、5) 第一、第二=lst 打印(一、二)复制代码
第一和第二两个变量,分别被赋值上了数组中的3和5,是不是很简单很清晰?
那在有这个特性之前,我们一般怎么从对象或数组中取值呢?来看看下面的代码:
首先列表=[3,5]让=列表[0]让第二=[1]复制代码
在这种方式中,你必须得手动指定个数组下标,才能把对应的值赋给你指定的变量。那如果用ES6的解构特性,代码将会变得更简洁,可读性也更高:
让(一、二)=列表;复制代码
对象的解构
基础对象解构
首先我们来看看ES6中基本的对象解构应该怎么写:
const家庭={父亲:& # 39;& # 39; 母亲:& # 39;& # 39;}const{父亲、母亲}=家庭;复制代码
我们从家庭对象中解构出来了它的两个属性父亲和母亲,并赋值给了另外定义的父亲和母亲对象。此后,我们就能直接通过父亲和母亲变量获取到家庭中相应的关键值了。这个例子是解构对象最简单的一种应用,下面来看看更有趣的。
解构没有声明过的对象
在上面的例子中,我们先声明的家庭对象,然后再通过解构语法获取其中的值。那如果不声明是否可以呢:
const{父亲、母亲}={父亲:& # 39;& # 39;,母亲:& # 39;& # 39;}复制代码
其实也是可以的,在一些情况下,我们是没有必要特意去声明一个对象或是把对象赋值给一个变量,然后去才解构的。很多时候我们可以直接解构未声明的对象。
解构对象并重命名变量
我们也可以将对象中的属性解构之后,并对其重新命名,比如:
const{父亲:f,母亲:m}={父亲:& # 39;1 & # 39;,母亲:& # 39;2 & # 39;}console.log (f);//& # 39;1 & # 39;复制代码
在上面的代码中,对象中的父亲被解构出来后,重新赋值给了变量f,与前一个例子相比,相当于重名了了父亲变量为f。接下来就可以用f继续进行操作。
解构默认值
想象一下一种场景,后台返回了一个家庭对象,原本家庭对象约定了有三个属性,分别为父亲,母亲,孩子,你拿到返回的数据并解构这三个属性:
const{父亲、母亲、孩子}={父亲:& # 39;1 & # 39;,母亲:& # 39;2 & # 39;,孩子:& # 39;3 & # 39;}复制代码
这看上去没有什么问题,但现实情况总是不如人意。后台由于代码有错误,返回的家庭对象中,只包含了妈妈和孩子,漏了父亲。这时经过上面代码的解构后,父亲就会变成定义:
const{父亲、母亲、孩子}={父亲:& # 39;1 & # 39;,母亲:& # 39;2 & # 39;}console.log(孩子)//未定义复制代码
很多时候我们会想要在后台漏了某个属性的时候,也能解构出一个默认值。那其实可以这么写:
const{父亲=& # 39;1 & # 39;,母亲=& # 39;2 & # 39;,孩子=& # 39;3 & # 39;}={父亲:& # 39;1 & # 39;,母亲:& # 39;2 & # 39;}console.log(孩子)//& # 39;3 & # 39;复制代码
结合前一个例子,你既可以改变量名又能赋值默认值:
const{父亲:f=& # 39; 1 & # 39;,母亲:m=& # 39; 2 & # 39;,孩子:c=& # 39; 3 & # 39;}={父亲:& # 39;1 & # 39;,母亲:& # 39;2 & # 39;}复制代码
在函数参数中解构
const家庭={父亲:& # 39;& # 39; 母亲:& # 39;& # 39;}函数日志({父亲}){console.log(父亲) } 日志(家庭)复制代码
在函数的参数中,运用解构的方式,可以直接获取出入对象的属性值,不需要像以往使用的家庭。父亲传入。
解构嵌套对象
在上面的例子中,家庭的属性都只有1层,如果家庭的某些属性的值也是一个对象或数组,那怎么将这些嵌套对象的属性值解构出来呢?来看看下面的代码:
const家庭={父亲:& # 39;迈克# 39; 母亲:[{名称:& # 39;玛丽# 39; }) }const{父亲、母亲:[{名字:motherName }]}=家庭;console.log(父亲);//& # 39;迈克# 39;console.log (motherName)//& # 39;玛丽# 39;复制代码ES6中Javascript解构是什么