Почему [1, 2, 4, 5] является допустимым массивом JavaScript?

1

Я был недавно укушен ошибкой, где случайно было слишком много запятых в массиве JavaScript, что приводит нас к сегодняшнему вопросу: почему

[1, 2,  , 4, 5]

действительный массив JavaScript, а не синтаксическая ошибка? Является ли он четко определенным в стандарте ECMAScript, который должен включать элементы? Кажется, такая легкая опечатка.

Для получения дополнительной информации можно отметить, что [1, 2,, 4, 5][2]; не undefined.

Теги:
programming-languages
grammar

2 ответа

2
Лучший ответ

Является ли он четко определенным в стандарте ECMAScript, который должен включать элементы?

Да, это. См. Https://tc39.github.io/ecma262/#sec-array-initializer

Элементы массива могут быть удалены в начале, середине или конце списка элементов [ArrayLiteral]. Всякий раз, когда запятой в списке элементов не предшествует AssignmentExpression (т.е. Запятая в начале или после другой запятой), отсутствующий элемент массива вносит вклад в длину массива и увеличивает индекс последующих элементов. Элементы массива элементов не определены. Если элемент заканчивается в конце массива, этот элемент не вносит вклад в длину массива.

В грамматике найдите нетерминальный Elision.

4

Такие массивы называются разреженными массивами.

http://2ality.com/2012/06/dense-arrays.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню