Получить арность функции


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

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

function zero() {
    // Should return 0
}

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

function two(x, y) {
    // Should return 2
}
5   51  

5 ответов:

> 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, у нас есть две морщины:

  • функции могут иметь параметр "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

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

пример:

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

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

Примечание: количество параметров, передаваемых в вызове функции, не влияет на арность функции.

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