小编给大家分享一下JavaScript中解构的使用示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
JavaScript中5种有趣的解构用法。
1。交换变量
通常交换两个变量的方法需要一个额外的临时变量,来看看例子:
let a =, 1; let b =, 2; let 温度; 时间=temp ;; 时间=a b; 时间=b 温度;//,,,=祝辞;2 b;,//,=祝辞,1
<代码>温度> 代码是一个临时变量,它先保存<代码> 代码>的值。然后把b <代码> 代码>的值赋值给<代码> 代码>,接着将<代码>温度> 代码值赋给b <代码> 代码>。
如果使用解构的方式会更简单,不需要什么鬼的<代码>温度> 代码变量。
let a =, 1; let b =, 2; [a, b],=, [b, a];//,,,=祝辞;2 b;,//,=祝辞,1
<代码> [a, b]=[b]> 代码是解构赋值,右边,创建了一个数组<代码> [b]> 代码,即<代码>(2,1)> 代码。这个数组<代码> 2> 代码被赋值了给<代码> 代码>,1被赋值给了<代码> 代码>。
虽然这种方式也创建了临时数组,但这种方式给看起来至少更简洁,使用解构咱们还可以交换<代码> 代码> 2个以上的变量。
let zero =, 2; let one =, 1; let two =, 0; [0,,1,,2),=,(两个,,,,0); 零,,//,=在0//,,,,=在1 两个,,,//,=祝辞,2
2。访问数组中元素
有种场景,咱们可能有一个为空的项数组。并且希望访问数组的第一个,第二个或第n个项,但如果该项不存在,则使用指定默认值。
通常会使用数组的长度<代码> 代码>属性来判断
const colors =, []; let firstColor =, & # 39;白色# 39;; if (colors.length 祝辞,0),{=,firstColor 颜色[0]; } firstColor;,//,=祝辞,& # 39;白色# 39;
使用数组解构,可以更简洁的实现同样的效果:
const colors =, []; const [firstColor =, & # 39;白色# 39;],=,颜色; firstColor;,//,=祝辞,& # 39;白色# 39;
<代码> const [firstColor=& # 39;白色# 39;]=> 代码颜色解构将<代码> 代码>数颜色组的第一个元素赋给<代码> firstColor> 代码变量。如果数组在索引<代码> 0 代码>处没有任何元素,则分配”怀特<代码> 代码>“默认值。
当然还可以更灵活,如果只想访问第二个元素,可以这么做。
const colors =, []; const [, secondColor =, & # 39;黑色# 39;],=,颜色; secondColor;,//,=祝辞,& # 39;黑色# 39;
注意解构左侧的逗号:它表示忽略第一个元素,<代码> secondColor> 代码使用<代码> 代码>颜色数组中索引为<代码> 1> 代码的元素进行赋值。
3。不可变操作
当我开始使用<代码>反应代码>和<代码>回来的> 代码时,被迫编写了一些遵守不可变性的代码。虽然一开始有些困难,但后来我看到了它的好处:更容易处理单向数据流。
不变性要求不能改变原始对象。幸运的是,解构可以以不可变的方式轻松实现某些操作。
const numbers =, (1, 2, 3]; const [,……fooNumbers],=,数字; fooNumbers;,//,=祝辞,(2,3) 数字,,//,=祝辞,[1,2,3]
解构<代码> [,……fooNumbers]=> 代码数量创建一个新的数组<代码> fooNumbers 代码>,<代码> fooNumbers> 代码包含数字<代码> 代码>元素,除了第一个元素。
<代码> 代码>数数字组没有发生变化,保持操作不变性。
以同样不可变的方式,可以从对象中删除属性,接着试着从对象大<代码> 代码>中删除foo <代码> 代码>属性:
const big =, { ,foo: & # 39; value foo # 39; ,酒吧:& # 39;value 酒吧# 39; }; const {foo,大敌;……small },=,大; 小;,//,=祝辞,{,酒吧:& # 39;value 酒吧# 39;,} 大,,//,=祝辞,{foo:大敌;& # 39;value foo # 39;,,酒吧:,& # 39;value 酒吧# 39;,}
4。解构iterable
在前面几个例子中,对数组使用了解构,但是咱们可以对任何实现可迭代协议(iterable协议)的对象进行解构。