Проверяет, сколько аргументов функция принимает в Javascript?
С arguments.length я могу видеть, сколько аргументов было передано в функцию.
Но есть ли способ определить, сколько аргументов может принимать функция, поэтому я знаю, сколько я должен пройти?
Ответ 1
Function.length сделает эту работу (на мой взгляд, очень странно)
function test( a, b, c ){}
alert( test.length ); // 3
Кстати, это свойство длины весьма полезно, взгляните на эти слайды учебника Джона Резига по Javascript
EDIT
Этот метод будет работать только в том случае, если для аргументов не установлено значение по умолчанию.
function foo(a, b, c){};
console.log(foo.length); // 3
function bar(a = '', b = 0, c = false){};
console.log(bar.length); // 0
Свойство .length даст вам количество аргументов, которые необходимо установить, а не количество аргументов, которое имеет функция.
Ответ 2
Свойство arity указывает количество аргументов, ожидаемых для текущей функции. Это отличается от arguments.length, который указывает, сколько фактических аргументов было передано.
Обратите внимание, что arity устарел с версии v1.4. Правильный способ получить количество ожидаемых аргументов теперь function.length, как было предложено Harmen.
Ответ 3
Побочные эффекты
Остерегайтесь, прежде чем рассчитывать на fn.length, есть некоторые крайние случаи, когда результат может не соответствовать ожидаемому:
const fn1 = ( a, b ) => {}; // length: 2
const fn2 = ( a = 0, b ) => {}; // length: 0
const fn3 = ( ...params ) => {};// length: 0
const fn4 = ( a, b = 1, c ) => {};// length: 1
fn.length не распознает значения по умолчанию или оператор покоя.