Длина массива после записи по индексу 7 Контекст: массивы в JavaScript Начальная длина: 3 (элементы [1,2,3]) Запись по индексу 7 увеличит размер массива Итоговая длина составит 8 (индексы от 0 до 7) Индексы с 3 по 6 будут содержать undefined В результате массив станет разреженным Такое поведение обусловлено динамической природой массивов JS Практическое значение: это может сказываться на итерации и производительности
Какой станет длина массива [1, 2, 3], если записать значение по индексу 7?
Длина массива после записи по индексу 7 Контекст: массивы в JavaScript Начальная длина: 3 (элементы [1,2,3]) Запись по индексу 7 увеличит размер массива Итоговая длина составит 8 (индексы от 0 до 7) Индексы с 3 по 6…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Длина массива после записи по индексу 7
- Контекст: массивы в JavaScript
- Начальная длина: 3 (элементы [1,2,3])
- Запись по индексу 7 увеличит размер массива
- Итоговая длина составит 8 (индексы от 0 до 7)
- Индексы с 3 по 6 будут содержать undefined
- В результате массив станет разреженным
- Такое поведение обусловлено динамической природой массивов JS
- Практическое значение: это может сказываться на итерации и производительности
Подробный ответ
Основной ответ
Если записать значение в массив из трёх элементов [1, 2, 3] по индексу 7, его длина автоматически вырастет до 8. Причина в том, что в JavaScript длина массива всегда определяется как наибольший индекс плюс 1, даже когда элементы между началом и этим индексом не инициализированы.
Ключевые моменты
- Когда значение присваивается индексу, выходящему за текущую длину массива (например,
arr[7] = value), длина обновляется до8. - Промежуточные индексы с 3 по 6 остаются "пустыми" (i.e. неинициализированными): они существуют, но при обращении к ним возвращается
undefined. - Именно этим массивы JavaScript отличаются от классических статических массивов в языках наподобие C++, где размер задаётся заранее и не изменяется.
Практический контекст
Такой механизм удобен для динамического формирования данных, однако требует осторожности: очень большие индексы создают «разреженные» массивы и могут снижать производительность. Если нужны плотные данные, обычно применяют методы массива или структуры с фиксированным размером, например TypedArray.
Если требуется рассмотреть аналогичное поведение в других языках, уточните — я дополню ответ.