Возможно ли знать, если моя функция принимает vars?Можно ли определить, имеет ли функция аргументы?
Например:
function ada (v) {};
function dad() {};
alert(ada.hasArguments()); // true
alert(dad.hasArguments()); // false
Возможно ли знать, если моя функция принимает vars?Можно ли определить, имеет ли функция аргументы?
Например:
function ada (v) {};
function dad() {};
alert(ada.hasArguments()); // true
alert(dad.hasArguments()); // false
Да. length
свойства функции возвращает количество объявленных аргументов:
alert(ada.length); // 1
alert(dad.length); // 0
Это так полезно, чтобы иметь возможность найти количество объявленных аргументов функции на динамическом языке, и все же решение JavaScript называть это свойство 'length' кажется странным ... – iamnotmaynard
Действительно ли это действительно полезно? –
функция в length
свойство представляет ряд формальных параметров. Отметим, что это не обязательно равно числу фактических параметров:
function foo(one, two, three) {
return foo.length === arguments.length;
}
foo("test");
foo("test", "test", "test");
Выход:
false
true
+1 для использования правильного термина «формальные параметры», хотя он должен читать «... не обязательно равный количеству фактических * аргументов *». –
«Фактический аргумент» является избыточным. «Аргумент» и «фактический параметр» являются синонимами. –
См .: http://en.wikipedia.org/wiki/Parameter_(computer_programming)#Parameters_and_arguments –
Также известен как [арности] (https://en.wikipedia.org/wiki/Arity) :) – Andy