Поняты ли правила ES6 Array?
Ниже приведен фрагмент кода ES6 ниже. Это было действительно. Я все еще могу запустить его в старых версиях Traceur, но последние Babel и Traceur, похоже, больше не нравятся for-loop в массиве. Может ли кто-нибудь сказать мне, почему это более не актуально.
let people = [
{
"firstName": "Belinda",
"phone": "1-607-194-5530",
"email": "[email protected]"
},
{
"firstName": "Elizabeth",
"phone": "1-155-446-1624",
"email": "[email protected]"
}
]
let phones = [for({phone} of people) phone];
console.log(phones)
Ниже приведен фрагмент ниже ES6, поэтому я знаю, что уничтожение внутри цикла for в порядке.
for(let {phone} of people) {
console.log(phone)
}
Ответы
Ответ 1
Понятия Array были удалены в BabelJS версии 6. Спецификация ES2015 не содержит упоминаний о понимании, поэтому они, вероятно, были удалены. Быстрый поиск в ES Обсудить архивы списков рассылки оказались пустыми на чем-то окончательном.
В качестве немного более подробной альтернативы есть Object.entries
(a stage-3 в ES7 ) и Array.prototype.map
.
let emails = people.map(({ email }) => email);
Ответ 2
http://exploringjs.com/es6/ch_faq.html#_does-es6-have-array-comprehensions полезно:
Первоначально ES6 должен был понимать Array и Generator (аналогично Haskell и Python). Но они были отложены до ES6, потому что TC39 хотел изучить два пути:
- Возможно создание понятий, которые работают на произвольные datatypes (подумайте Microsoft LINQ).
- Возможно также, что методы для итераторов - лучший способ достичь того, что понимает сделать.
Ответ 3
Может ли кто-нибудь сказать мне, почему это уже недействительно.
Массивное понимание не попало в окончательную версию ES6, и это, похоже, не рассматривается для следующей версии: https://github.com/tc39/ecma262