> Почему у объекта 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, можно преобразовать его в настоящий массив:

JAVASCRIPT
const args = Array.from(arguments);
// или
const args = [...arguments];

В современном JavaScript (ES6+) рекомендуется вместо arguments использовать rest-параметры (...args), которые уже являются полноценным массивом.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью