当前位置: 首页 > Web前端 > vue.js

5个实用的JS解构用法

时间:2023-03-31 14:34:26 vue.js

喜欢再看,养成习惯文档,教程资料。欢迎来到星和完美。面试时可参考考点复习。我希望我们能在一起。为了保证更好的可读性,本文采用意译而非直译。1.交换变量通常交换两个变量的方法需要一个额外的临时变量,例如:leta=1;letb=2;lettemp;temp=a;a=b;b=temp;a;//=>2b;//=>1temp是一个临时变量,它保存了一个first的值。然后把b的值赋给a,再把temp的值赋给b。使用解构而不是一些该死的临时变量会更容易。让a=1;让b=2;[a,b]=[b,a];a;//=>2b;//=>1[a,b]=[b,a]是一个解构赋值,右边创建了一个数组[b,a],即[2,1]。这个数组2赋给a,1赋给b。虽然这个方法也创建了一个临时数组,但是这个方法至少看起来更简洁,我们可以使用解构来交换两个以上的变量。让零=2;让一=1;让二=0;[零,一,二]=[二,一,零];零;//=>0一个;//=>1二;//=>22。有一种访问数组中元素的场景。我们可能有一个空的项目数组。并希望访问数组的第一个、第二个或第n个项目,但如果该项目不存在,则使用指定的默认值。通常使用数组的length属性来判断constcolors=[];letfirstColor='white';if(colors.length>0){firstColor=colors[0];}firstColor;//=>'white'使用数组解构可以更简洁地实现同样的效果:constcolors=[];const[firstColor='white']=颜色;第一种颜色;//=>'white'const[firstColor='white']=colors解构将colors数组的第一个元素赋给firstColor变量。如果数组在索引0处没有任何元素,则分配默认值“white”。当然,它可以更灵活。如果你只想访问第二个元素,你可以这样做。constcolors=[];const[,secondColor='black']=colors;secondColor;//=>'black'注意解构左边的逗号:表示忽略第一个元素,secondColor使用colors数组元素赋值时的索引1。3.不可变操作当我开始使用React和Redux时,我被迫编写一些尊重不可变性的代码。一开始有点难,但后来我看到了好处:更容易处理单向数据流。不变性要求原始对象不能更改。幸运的是,解构使得以不可变的方式实现一些操作变得容易。constnumbers=[1,2,3];const[,...fooNumbers]=numbers;fooNumbers;//=>[2,3]数字;//=>[1,2,3]解构[,...fooNumbers]=numbers创建一个新数组fooNumbers,fooNumbers包含numbers元素,除了第一个元素。numbers数组没有变化,保持了运算的不变性。同样不可变的方式,你可以从对象中删除一个属性,然后尝试从对象中删除foo属性big:constbig={foo:'valueFoo',bar:'valueBar'};const{foo,...small}=大;小;//=>{bar:'valueBar'}big;//=>{foo:'valueFoo',bar:'valueBar'}4.解构前面例子中的可迭代对象在中,数组被解构,但我们可以解构任何实现可迭代协议的对象。许多基本类型和对象都是可迭代的:数组、字符串、类型化数组、集合和映射。如果不想局限于原始类型,可以通过实现可迭代协议来自定义解构逻辑。电影包含电影对象列表。解构电影时,将标题作为字符串获取非常有用。让我们实现一个自定义迭代器。constmovies={list:[{title:'Heat'},{title:'Interstellar'}],[Symbol.iterator](){letindex=0;return{next:()=>{if(index'Heat'movies对象通过定义Symbol.iterator方法实现可迭代协议,迭代器迭代title。遵循可迭代协议允许通过读取第一部电影的标题将电影对象分解为标题:const[firstMovieTitle]=movies。5.解构动态属性根据经验,通过属性解构对象比解构数组更常见。对象解构看起来简单得多:constmovie={title:'Heat'};const{title}=电影;标题;//=>'Heat'const{title}=movie创建一个变量title,并将属性movie.title的值赋给它。说到对象解构,我有点惊讶我们不必静态地知道属性名,我们可以使用动态属性名来解构对象。要了解动态解构的工作原理,请编写一个greet函数:functiongreet(obj,nameProp){const{[nameProp]:name='Unknown'}=obj;return`Hello,${name}!`;}greet({name:'Batman'},'name');//=>'你好,蝙蝠侠!'问候({},'名字');//=>'你好,未知!'调用greet()函数:对象和属性名称。在greet()内部,解构赋值const{[nameProp]:name='Unknown'}=obj使用方括号[nameProp]读取动态属性名,name变量接收动态属性值。更好的是,如果属性不存在,您可以指定默认值“Unknown”。代码部署后可能存在的bug,无法实时获知。事后为了解决这些bug,花费了大量的时间在日志调试上。顺便推荐一个好用的bug监控工具Fundebug。干货交流系列文章总结如下。我觉得点个Star就好了。欢迎加群,互相学习。https://github.com/qq44924588...我是小智,公众号《大招天下》的作者,前端技术爱好者。我会经常分享自己学习看到的干货,在进步的路上互相鼓励!关注公众号,后台回复福利,就能看到福利,你懂的。