Корректный рекурсивный вызов функции, с защитой от изменения её имени
function factorial(x) {
return x == 1 ? 1 : x + arguments.callee(x - 1);
}
var fac = factorial;
factorial = 27;
alert(fac(factorial)); // Возвращает “378″.
// ---------------------------------------------------
var factorial = function f(x) {
return x == 1 ? 1 : x + f(x - 1);
};
alert(f); // Ошибка: “f is not defined”
Получить колличество аргументов, которые объявлены в описании функции
function one (foo) {};
function three (foo, bar, qux) {};
console.log( one.length); // 1
console.log(three.length); // 3
Источники:
- 1 - vingrad.ru
- 2 - habrahabr.ru