Вопрос

В JavaScript, как можно определить количество формальных параметров, определенных для функции?

Обратите внимание, это не arguments параметр при вызываемой функции, но количество именованных аргументов, с которыми была определена функция.

function zero() {
    // Should return 0
}

function one(x) {
    // Should return 1
}

function two(x, y) {
    // Should return 2
}
Это было полезно?

Решение

> zero.length
0
> one.length
1
> two.length
2

Источник

Функция может определить свою собственную артичность (длину), как это:

// For IE, and ES5 strict mode (named function)
function foo(x, y, z) {
    return foo.length; // Will return 3
}

// Otherwise
function bar(x, y) {
    return arguments.callee.length; // Will return 2
}

Другие советы

Артика функции хранится в его .length имущество.

function zero() {
    return arguments.callee.length;
}

function one(x) {
    return arguments.callee.length;
}

function two(x, y) {
    return arguments.callee.length;
}

> console.log("zero="+zero() + " one="+one() + " two="+two())
zero=0 one=1 two=2

Как покрыто другие ответы, length Собственность говорит вам об этом. Так zero.length будет 0, one.length будет 1, и two.length будет 2.

Начиная с ES2015, у нас есть два морщин:

  • Функции могут иметь параметр «покоя» в конце списка параметров, который собирает любые аргументы, приведенные в этой позиции, или впоследствии в истинном массиве (в отличие от 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

Функция - это количество параметров, которые содержит функция. Это может быть достигнуто, вызывая свойство длины.

Пример:

function add(num1,num2){}
console.log(add.length); // --> 2

function add(num1,num2,num3){}
console.log(add.length); // --> 3

ПРИМЕЧАНИЕ. Количество параметров, передаваемых в функциональном вызове, не влияет на Arity функции.

Свойство Arity, используемое для возврата количества аргументов, ожидаемых функцией, однако оно больше не существует, и было заменено функцией.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top