以下ES6代码段无效.它曾经是有效的.我仍然可以在旧版本的Traceur中运行它,但最新的Babel和Traceur似乎不再喜欢数组中的for循环了.任何人都可以告诉我为什么它不再有效.
let people = [
{
"firstName": "Belinda",
"phone": "1-607-194-5530",
"email": "dignsissim.Maecenas.ornare@lacusAliquam.co.uk"
},
{
"firstName": "Elizabeth",
"phone": "1-155-446-1624",
"email": "cursus.et.magna@nislsemconsequat.edu"
}
]
let phones = [for({phone} of people) phone];
console.log(phones)
Run Code Online (Sandbox Code Playgroud)
下面的代码片段是有效的ES6,所以我知道for循环内部的破坏是正常的
for(let {phone} of people) {
console.log(phone)
}
Run Code Online (Sandbox Code Playgroud)
nik*_*org 27
在BabelJS第6版中删除了数组解析.该ES2015规格没有提及内涵的,所以他们很可能被丢弃.通过ES Discuss邮件列表档案的快速搜索在任何确定的内容上都是空洞的.
作为一个稍微冗长的替代方案Object.entries(ES7中的第3阶段特征)和Array.prototype.map.
let emails = people.map(({ email }) => email);
Run Code Online (Sandbox Code Playgroud)
Dav*_*ton 10
http://exploringjs.com/es6/ch_faq.html#_does-es6-have-array-comprehensions非常有帮助:
最初,ES6具有Array和Generator理解(类似于Haskell和Python).但是他们被推迟到ES6之后,因为TC39想要探索两个途径:
- 有可能创建适用于任意数据类型的理解(想想微软的LINQ).
- 迭代器的方法也可能是实现理解的更好方法.