JavaScript中匿名函数的递归调用

callee 是 arguments 对象的一个属性,其值是当前正在执行的 function 对象。 它的作用是使得匿名 function 可以被递归调用。 下面以一段计算斐波那契序列(Fibonacci sequence)中第 N 个数的值的代码来演示 arguments.callee 的使用

function fibonacci(num) {
    return (function(num) {
        if (typeof num !== "number") return -1;
        num = parseInt(num);
        if (num < 1) return -1;
        if (num == 1 || num == 2) return 1;
        return arguments.callee(num - 1) + arguments.callee(num - 2);
    })(num);
}
fibonacci(100);
posted @ 2012-02-20 21:09  mfylee  阅读(3118)  评论(0编辑  收藏  举报