时间:2021-05-28
前言
我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段。在ES6中添加了可以简化这种任务的新特性:解构。解构是一种打破数据结构,将其拆分为更小部分的过程。本文将详细介绍ES6解构赋值,下面话不多说了,来一起看看详细的介绍吧
数组的解构赋值
基本用法
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为结构。
在ES6之前想要为变量赋值,只能指定其值,如下:
而在ES6中可以写成这样,如下:
值得注意的是,等式两边的值要对等,这样左边的变量才会被赋上右边对应的值,如果不对等左边的值将会出现undefined,如下写法:
注意:只有左右两边的 格式一定要对等,数量可以不对等。
let [a,b,c] = [1,2]a = 1, b = 2, c = undefinedlet [a,,c] = [1,2,3]a = 1, c = 3let [a, ...b] = [1,2,3]a = 1, b = [2,3]let [a] = []let [b,a] = [1]a = undefined还有一种情况,等号左边为数组,但是等号右边为其他值,将会报错。如下:
但是如果左边为数组,右边为字符串,将会取字符串的第一个下标的值
对于Set结构,同样可以使用数组的解构赋值。
默认值
解构赋值允许指定默认值
let [a = 3] = [] // a:3let [a = 3,b] = [,4] // a:3 b:4let [a = 3,b] = [5,4] // a:5 b:4特殊
let [a = 3] = [undefined] // a:3let [a = 3] = [null] // a:nullTips: 在es6中使用严格相等运算符,在结构赋值中如果需要默认值生效,则应对等的值为undefined的时候才会采用默认值,否则还是使用赋值。上面中null 不严格等于undefined++
如果默认值的赋值为一个表达式,只有当等号右边的赋值没有值为undefined的时候,才会取表达式中的值,如下:
对象的解构赋值
与数组的不同点是,数组的元素必须和赋值的元素要位置一致才能正确的赋值,而对象的解构赋值则是等号两边的变量和属性同名即可取到正确的值。否则值为 undefined
let {a,b} = {a:'23',b:'3'}let {a,b} = {b:'3',a:'23'}// 上面两个的值 都是 a: 23 b: 3let {a,b} = {a:'3',c:'d'}//a: 3 b: undefined对象的解构赋值还有将某一个现有对象的方法赋值到一个新的变量,如下:
如果等号左边的变量名不能和等号右边的对象的属性名一致,则必须写成如下格式:
对象的解构赋值一样是可以嵌套解构的,如下:
嵌套赋值
如果解构模式 是嵌套的对象,如果子对象所在的父属性不存在,则会报错,如下:
默认值
注意点:
1)不能将已声明的变量用于解构赋值,因为已经是一个代码块。
字符串的解构赋值
如果赋值的对象是数组,字符串将被分割为数组的格式,一一对应赋值
let [a,b] = 'ha'// a = h , b = a同时可以获得字符串的长度:let {length:len} = '12121'// len = 5数值和布尔值的解构赋值
如果等号右边是数字或者布尔值 则转换成对象或者说,除了是数组和对象,其他值都将转换成对象,null 和 undefined 除外。如下:
let {t:s} = 123let {t: s} = true函数参数的解构赋值
其他
不能使用圆括号的情况
可以使用圆括号的情况
解构赋值的用途
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了ES6新特性之变量的解构赋值。分享给大家供大家参考,具体如下:1.数组的解构赋值//①可以从数组中提取值,按照对应位置,对变量赋值var[a,b]
本文实例讲述了ES6数组与对象的解构赋值。分享给大家供大家参考,具体如下:数组的解构赋值基本用法ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,
本文实例讲述了ES6知识点整理之对象解构赋值应用。分享给大家供大家参考,具体如下:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(D
变量的解构赋值ES6中允许按照一定模式,从数组和对象中提取,对变量进行赋值。数组的解构赋值var[a,b,c]=[1,2,3];a//1;b//2;c//3;上
本文实例讲述了ES6中let、const的区别及变量的解构赋值操作方法。分享给大家供大家参考,具体如下:声明:本文内容依照阮一峰老师ECMAScript6入门一