Подтвердить что ты не робот

Поняты ли правила 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)
}
4b9b3361

Ответ 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