Можно ли определить, имеет ли функция аргументы?

Можно ли знать, если моя функция принимает vars?

Например:

function ada (v) {};
function dad () {};
alert(ada.hasArguments()); // true
alert(dad.hasArguments()); // false

Ответ 1

Да. Свойство length функции возвращает количество объявленных аргументов:

alert(ada.length); // 1
alert(dad.length); // 0

Ответ 2

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

function foo(one, two, three) {
    return foo.length === arguments.length;
}

foo("test");
foo("test", "test", "test");

Вывод:

false
true