Подтвердить что ты не робот

Проверяет, сколько аргументов функция принимает в Javascript?

С arguments.length я могу видеть, сколько аргументов было передано в функцию.

Но есть ли способ определить, сколько аргументов может принимать функция, поэтому я знаю, сколько я должен пройти?

4b9b3361

Ответ 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, который указывает, сколько фактических аргументов было передано.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/arity

Изменить

Обратите внимание, что 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 не распознает значения по умолчанию или оператор покоя.

Вы можете связываться с этим codePen