Что такое массив arguments

Ответ

Массив arguments — это объект, доступный внутри функций, содержащий все переданные аргументы, даже если они не объявлены в параметрах. Это псевдомассив (имеет индексы и length, но не методы массива).

function sum() {
  let total = 0;
  for (let i = 0; i < arguments.length; i++) {
    total += arguments[i];
  }
  return total;
}
console.log(sum(1, 2, 3)); // 6

Особенности:

  • Не работает в стрелочных функциях.
  • Устаревший подход, лучше использовать rest-оператор (...args).
  • Не поддерживает методы массивов (например, forEach), но можно конвертировать в массив через Array.from(arguments).

Ответ 18+ 🔞

Да ты посмотри, что за зверь такой этот arguments! Сидит себе внутри функции, как паук в банке, и держит в лапках ВСЕ переданные аргументы. Даже те, которые ты в параметрах-то и не объявлял, ёпта! Он же псевдомассив, хитрая жопа: у него есть индексы и длина (length), но вот методов обычного массива — нихуя. Не сможешь ты на нём forEach или map вызвать просто так.

function sum() {
  let total = 0;
  for (let i = 0; i < arguments.length; i++) {
    total += arguments[i];
  }
  return total;
}
console.log(sum(1, 2, 3)); // 6

Вот, смотри, функция sum вроде бы пустая, нихуя не принимает. А arguments внутри всё схватил — и раз, два, три — и просуммировал. Волшебство, блядь!

Но есть нюансы, ебать мои старые костыли:

  • В стрелочных функциях этой хуйни нет. Там arguments будет искать снаружи, а если не найдёт — пиши пропало.
  • Это, можно сказать, дедушка старый. Сейчас все крутые ребята используют rest-оператор (...args). И сразу получают нормальный массив, а не эту псевдособаку.
  • Хочешь с ним как с массивом работать? Придётся конвертировать, например, через Array.from(arguments). А то без методов жить — печалька, блядь.

Короче, знать про него надо, потому что в старом коде его овердохуища. Но для новых дел — ...args и вперёд, без этих плясок с бубном!