Как указано в других ответах, свойство length
говорит вам об этом.Так что zero.length
будет 0, one.length
будет 1, а two.length
будет 2.
Начиная с ES2015, у нас есть две складки:
- Функции могутпараметр rest в конце списка параметров, который собирает любые аргументы, заданные в этой позиции или позже, в истинный массив (в отличие от
arguments
псевдомассива) - Параметры функций могут иметь значения по умолчанию
Параметр rest не учитывается при определении арности функции:
function stillOne(a, ...rest) { }
console.log(stillOne.length); // 1
Аналогично, параметр с аргументом по умолчанию не добавляет в arity и фактически предотвращает добавление к нему других, следующих за ним, даже если они не имеютявные значения по умолчанию (предполагается, что они имеют значение по умолчанию undefined
):
function oneAgain(a, b = 42) { }
console.log(oneAgain.length); // 1
function oneYetAgain(a, b = 42, c) { }
console.log(oneYetAgain.length); // 1