Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是分解分配及其用途?_Javascript_Ecmascript 6_Destructuring_Object Destructuring - Fatal编程技术网

Javascript 什么是分解分配及其用途?

Javascript 什么是分解分配及其用途?,javascript,ecmascript-6,destructuring,object-destructuring,Javascript,Ecmascript 6,Destructuring,Object Destructuring,我一直在读ES6中介绍的 这个语法的目的是什么,为什么引入它,以及在实践中如何使用它的一些示例是什么 什么是分解分配 destructuring assignment语法是一个JavaScript表达式,它可以将数组中的值或对象中的属性解压缩到不同的变量中 - 优势 A.使代码简洁易读 我们可以很容易地避免重复破坏表达 一些用例 一,。要从对象获取变量中的值,请单击数组 设obj={'a':1,'b':{'b1':'1.1'} 设{a,b,b:{b1}}=obj console.log'a->

我一直在读ES6中介绍的

这个语法的目的是什么,为什么引入它,以及在实践中如何使用它的一些示例是什么

什么是分解分配

destructuring assignment语法是一个JavaScript表达式,它可以将数组中的值或对象中的属性解压缩到不同的变量中

-

优势

A.使代码简洁易读

我们可以很容易地避免重复破坏表达

一些用例

一,。要从对象获取变量中的值,请单击数组

设obj={'a':1,'b':{'b1':'1.1'} 设{a,b,b:{b1}}=obj console.log'a->'+a',\nb->',b',\nb1-->',b1 设obj2={foo:'foo'}; 设{foo:newVarName}=obj2; console.lognewVarName; 设arr=[1,2,3,4,5] 让[第一,第二,…休息]=arr console.logfirst,'\n',second,'\n',rest //嵌套提取也是可能的: 设obj3={foo:{bar:'bar'}}; 设{foo:{bar}}=obj3; 控制台.logbar 它类似于可以使用相同的变量名提取所拥有的内容

destructuring赋值是一个JavaScript表达式,它可以将数组中的值或对象中的属性解压缩到不同的变量中。让我们使用解构赋值从数组中获取月份值

var [one, two, three] = ['orange', 'mango', 'banana'];

console.log(one); // "orange"
console.log(two); // "mango"
console.log(three); // "banana"
您可以使用解构赋值获得对象的用户属性

var {name, age} = {name: 'John', age: 32};

console.log(name); // John
console.log(age); // 32

Javascript的非结构化赋值可能是从Perl语言中得到的灵感

这通过避免编写getter方法或包装函数来促进重用

我发现一个特别有用的最佳示例是重用返回的数据多于所需数据的函数

如果有一个函数返回一个列表、数组或json,而我们只对列表、数组或json的第一项感兴趣,
然后我们可以简单地使用反结构化赋值,而不是编写新的包装函数来提取感兴趣的数据项。

解构是否包括rest/spread运算符?@NickParsons对我来说,这些看起来非常相关,因此我在这个问题中考虑它们,请随意添加那些也有疑问的也相关:。很多关于解构、扩展语法和Rest参数的有用答案这是一个很好的dupe target参考问题,在Google上有很高的索引,这对我来说已经足够好了。搜索与解构相关的语法问题以链接到问题不包含解构的地方是一件痛苦的事情,这是否回答了您的问题?我想在解构时更改密钥名称。我有一个来自某些API的对象,这些键在可读代码中毫无意义,因此我需要将它们转换为更好的/可读的:{message:{WeirdNameKey:'Neil',MakesNoSense:'Foo'}//want:const{name:WeirdNameKey,system:MakesNoSense}=message;我可以发誓我这么做,只是为了清理东西以供使用。但是,这对我不起作用。我只想提取和重新设置密钥。我可以发誓我以前做过。是可能的吗?@NeilGuyLindberg看一下上面答案中的第一个代码段,您可以这样替换密钥的名称,即const{name:newName}={name:'some value'}谢谢@code maniac。我看到我在反转操作。我只需要翻转一下,所以我有:{WeirdNameKey:name},现在代码读起来很好。