Функция выведет 3. arguments.length показывает число фактически переданных аргументов, а не количество объявленных параметров.
function foo(a) {
Функция выведет 3. arguments.length показывает число фактически переданных аргументов, а не количество объявленных параметров.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
function foo(a) { console.log(arguments.length); } foo(1, 2, 3);
Ответ
Функция выведет 3. arguments.length показывает число фактически переданных аргументов, а не количество объявленных параметров.
У foo объявлен один параметр a, который получит 1, но вызов передаёт три значения: 1, 2 и 3. В обычной функции они доступны через arguments, поэтому его length равен 3.
Свойство foo.length в этом примере равно 1: оно относится к формальным параметрам функции. У стрелочных функций собственного arguments нет; для получения всех аргументов там используют rest-параметр, например (...args) => args.length.