> Почему у объекта arguments в JavaScript нет метода shift (JavaScript, TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript, TypeScript
> Пример ответа
Объект arguments - это не настоящий массив, а массивоподобный объект (array-like object). У него есть свойство length и возможность доступа по индексу, но он не наследует методы из Array.prototype, такие как shift, pop, forEach и т.д.
Причина в том, что arguments создан для совместимости со старым стандартом ECMAScript 3, где он был просто объектом с числовыми ключами. Методы массивов были добавлены позже, и их наследование могло бы нарушить обратную совместимость или привести к неожиданному поведению (например, shift изменяет исходный объект, что нежелательно для аргументов функции).
Если нужно использовать shift на arguments, можно преобразовать его в настоящий массив:
JAVASCRIPTconst args = Array.from(arguments);// илиconst args = [...arguments];
В современном JavaScript (ES6+) рекомендуется вместо arguments использовать rest-параметры (...args), которые уже являются полноценным массивом.
> Похожие задачи по frontend
Как проверять конкретный action в reducer в JavaScript/TypeScript?
Что такое псевдомассив arguments в JavaScript?
Как решать проблему потери контекста методов в классах JavaScript/TypeScript
Как использовать arguments в JavaScript?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью