Javascript 什么是分解分配及其用途?
我一直在读ES6中介绍的 这个语法的目的是什么,为什么引入它,以及在实践中如何使用它的一些示例是什么 什么是分解任务? 解构赋值语法是一个JavaScript表达式,它可以将数组中的值或对象中的属性解包为不同的变量 - 优势 A.使代码简洁易读 B.我们可以轻松避免重复破坏表达式 一些用例 1。要从对象、数组中获取变量中的值Javascript 什么是分解分配及其用途?,javascript,ecmascript-6,destructuring,object-destructuring,Javascript,Ecmascript 6,Destructuring,Object Destructuring,我一直在读ES6中介绍的 这个语法的目的是什么,为什么引入它,以及在实践中如何使用它的一些示例是什么 什么是分解任务? 解构赋值语法是一个JavaScript表达式,它可以将数组中的值或对象中的属性解包为不同的变量 - 优势 A.使代码简洁易读 B.我们可以轻松避免重复破坏表达式 一些用例 1。要从对象、数组中获取变量中的值 let obj={'a':1,'b':{'b1':'1.1'} 设{a,b,b:{b1}}=obj log('a-->'+a'\nb-->',b'\nb1-->',b1)
let obj={'a':1,'b':{'b1':'1.1'}
设{a,b,b:{b1}}=obj
log('a-->'+a'\nb-->',b'\nb1-->',b1)
设obj2={foo:'foo'};
设{foo:newVarName}=obj2;
console.log(newVarName);
设arr=[1,2,3,4,5]
让[第一,第二,…休息]=arr
console.log(第一个'\n',第二个'\n',其余)
//嵌套提取也是可能的:
设obj3={foo:{bar:'bar'}};
设{foo:{bar}}=obj3;
控制台日志(bar)代码>它类似于可以使用相同的变量名提取的内容
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'}}
//通缉:const{name:WeirdNameKey,system:MakesNoSense}=message我可以发誓我这么做,只是为了清理东西以备使用。但是,这对我不起作用。我只想提取和重新设置密钥。我可以发誓我以前做过。有可能吗?@NeilGuyLindberg看一下上面答案中的第一个代码段,您可以这样替换密钥的名称,即const{name:newName}={name:'some value'}
谢谢@code-maniac。我看到我在反转操作。我只需要翻转一下,所以我有:{WeirdNameKey:name}
,现在代码读起来很好。