Получить арность функции
в JavaScript, как можно определить количество формальных параметров, определенных для функции?
обратите внимание, это не arguments
параметр при вызове функции, но число именованных аргументов, с которыми была определена функция.
function zero() {
// Should return 0
}
function one(x) {
// Should return 1
}
function two(x, y) {
// Should return 2
}
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
Примечание: количество параметров, передаваемых в вызове функции, не влияет на арность функции.