jjzjj

destructuring

全部标签

javascript - es6 { [a] : b } destructuring mean? 是什么

这里有一些解构:const{[a]:b}=this.props但是,[a]:b是做什么的:带冒号的方括号是做什么的?在我的例子中,a作为具有字符串值的Prop之一提供。 最佳答案 这种ES6解构语法与用于定义具有可变属性名称的对象的新“增强对象文字”非常相似,因此我认为首先了解它很有用:在ES6之前,如果你想给一个属性名可变的对象赋值,你需要这样写varobj={};obj[variable]=value这是因为虽然点表示法和对象字面量表示法都需要使用实际的属性名称,但obj[prop]表示法允许您使用变量名。ES6引入了扩展对象字

javascript - 这种默认参数和解构的特殊场景是如何工作的?

我今天尝试了一些事情,遇到了一个我想了解的行为。varb=({a=1,b=1,c=1})=>a+b+c;b();//throwserror.但是如果这样定义varb=({a=1,b=1,c=1}=0)=>a+b+c;b()//returns3b([])//returns3这不应该是一个错误吗?零不知何故成为了这里的一个对象吗?它在某种程度上等同于以下内容吗?varb=({a=1,b=1,c=1}={})=>a+b+c;//thisispossibleIguess.我的问题不是常规解构和默认参数如何工作,而是如何评估这个特定场景。有人能给我解释一下吗? 最佳答

javascript - 如何在 ES6 中使用所有默认值解构选项参数?

我将ES6特性与babel编译器结合使用。我有一个将选项对象作为参数的函数:functionmyFunction({option1=true,option2='whatever'}){console.log(option1,option2);//dosomething...}当我调用它时,解构发生并且一切正常。大多数时候我想用默认选项调用它,所以我这样做:myFunction({});//true'whatever'但看起来有点奇怪。它会更干净,只需调用:myFunction();//TypeError:Cannotreadproperty'option1'ofundefined这可能

javascript - 为所有元素解构数组内的对象属性

在最基本的形式中,有一个对象数组:letarr=[{val:"a"},{val:"b"}];如何使用解构,只获取值['a','b']。获取第一个值很容易:let[{val:res}]=arr;//rescontains'a'获取数组内的所有值可以用rest运算符来完成:let[...res]=arr;//rescontainsallobjects结合这些,我希望能够使用:let[...{val:res}]=arr;//undefined,expectedall'val's(['a','b'])以上返回未定义(在FF中测试)。一些进一步的测试似乎表明,在使用对象解构时添加rest运算符也

javascript - ES6 解构赋值 `this`

下面的代码有效。有没有更方便的方法,如果可能的话,甚至是一条线?const{nextUrl,posts}=awaitpostService.getCommunityPosts(6);this.communityPosts=posts;this.nextUrl=nextUrl;我知道给解构的属性起别名,但我认为这对这种情况没有帮助。MDN对那个案子什么也没说。 最佳答案 您可以通过提供别名并将赋值封装在圆括号(awaitcodepen)中来赋值给现有对象的属性。constdemo={nextUrl:'nextUrl',posts:'p

javascript - ES6中如何使用解构赋值定义枚举?

您可以使用解构赋值在ES6中定义枚举,如下所示:var[red,green,blue]=[0,1,2];相反,我希望解构赋值的右侧是动态的。例如:varMAX_ENUM_SIZE=32;varENUM=newArray(MAX_ENUM_SIZE);for(vari=0;i不幸的是,这看起来像是一个hack。如果将来我想要更大的枚举怎么办?因此,我正在考虑将解构赋值与迭代器一起使用,如下所示:var[red,green,blue]=enumeration(/*Idon'twanttospecifysize*/);但是,我认为不可能将解构赋值与迭代器一起使用[需要引用]。有什么办法可以实

javascript - 什么是解构赋值及其用途?

我一直在阅读Destructuringassignment在ES6中引入。此语法的目的是什么,为什么引入它,以及如何在实践中使用它的一些示例? 最佳答案 Whatisdestructuringassignment?解构赋值语法是一种JavaScript表达式,可以将数组中的值或对象中的属性解包到不同的变量中。-MDNAdvantagesA.使代码简洁且更具可读性。B.我们可以轻松避免重复破坏表达式。Someusecases1.要从对象、数组中获取变量值letobj={'a':1,'b':{'b1':'1.1'}}let{a,b,b:

javascript - ES6 结构分配?

ES6的新解构赋值特性现在已经相当有名了(livecopy在Babel的REPL上);对于已经存在的变量:leta,b;//Existingvariablesleto={a:"a",b:"b"};//Anobjecttogetvaluesfrom//...({a,b}=o);//Setthemtothepropsfrom`o`console.log(a);//"a"console.log(b);//"b"在ES6中有简单对话吗?根据同名变量在现有对象上设置属性?(除了明显的o.a=a;o.b=b;)请注意,我不是在谈论什么时候创建一个对象,我们可以使用美妙的新对象初始化语法来做到这一点

javascript - 在 ES6 中使用对象或数组解构赋值时如何混合使用 const 和 let?

示例:constfoo={a:"A",b:"B"}const{a,b}=foo如果我希望b成为使用let的变量怎么办? 最佳答案 看起来你不能在一行中区分变量的声明。但是,您可以将它分成两行并使用不同的变量声明,这取决于您想要获取哪个变量。const{a}=foo;let{b}=foo; 关于javascript-在ES6中使用对象或数组解构赋值时如何混合使用const和let?,我们在StackOverflow上找到一个类似的问题: https://stac

javascript - 解构对象并忽略其中一个结果

我有:constsection=cloneElement(this.props.children,{className:this.props.styles.section,...this.props,});在this.props中,我有一个styles属性,我不想将其传递给克隆的元素。我该怎么办? 最佳答案 您可以使用objectrest/spreadsyntax://Wedestructureour"this.props"creatinga'styles'variableand//usingtheobjectrestsyntaxw