2011-12-29 3 views
1

Я знаю метод arguments.length, но это возвращает количество аргументов, с которыми вызывалась функция.Как определить, сколько аргументов определяет функция?

Что мне нужно вместо этого число аргументов функции требуется, так, например

function myFunc(arg1,arg2,arg3) { 
    alert("number of passed args:" + arguments.length); 
    alert("number of required args:" + /*the code I'm asking for*/); 
}; 

myFunc('some arg'); 

Так MyFunc() возвращает два предупреждения, говоря 1 и 3.

Любой способ сделать это?

ответ

3

Другой, он устарелarguments.caller.length Свойство имеет это значение.

function myFunc(arg1,arg2,arg3) { 
    alert("number of passed args:" + arguments.length); 
    alert("number of required args:" + arguments.caller.length); 
} 

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

function myFunc(arg1,arg2,arg3) { 
    alert("number of passed args:" + arguments.length); 
    alert("number of required args:" + myFunc.length); 
} 
+0

Об этом «осуждается» не так просто: http://stackoverflow.com/a/1335595/393087, они изменили имя для него, функциональность будет сохранены. (как я понимаю это через мои текучие навыки английского языка) – rsk82

+0

@ rsk82 'arguments.callee.caller' указывает на вызывающую функцию, а не на функцию. –

Смежные вопросы