Выбор ответа Middle Современный синтаксис обновлено
Array.prototype.with за границей массива
Вопрос
Что произойдёт?
const arr = [1, 2, 3];
const next = arr.with(5, 0);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Бросит RangeError. with(index, value) возвращает копию массива с заменой одного элемента и никогда не мутирует исходный.
Варианты ответа
nextбудет[1, 2, 3, <2 пустых слота>, 0]nextбудет[1, 2, 3], ничего не изменится- Бросит RangeErrorправильный ответ
arrизменится,nextбудетundefined
Разбор
with(index, value) возвращает копию массива с заменой одного элемента и никогда не мутирует исходный. В отличие от присваивания arr[5] = 0, которое расширило бы массив с дырами, with принимает только существующий индекс (отрицательные считаются с конца) и для индекса вне диапазона бросает RangeError. Тихо вернуть копию без изменений он тоже не может.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.