您的位置:首页 > Web前端 > JavaScript

javascript的递归调用 特殊指针arguments.callee

2014-11-23 21:05 405 查看
/**

 * Created by jack on 14-11-23.

 */

/*

    javascript的递归调用

 */

function factorial(num)

{

    if(num<1){

        return 1;

    }else{

        return num*factorial(num-1);

    }

}

/*

这段会报错执行不了,

var anotherFactorial = factorial;

factorial=null;

alert(anotherFactorial(4));

以上代码把factorial保存在变量anotherFactorial中,然后factorial设置为null,结果指向原始函数的引用只剩下一个,

但接下来调用anotherFactorial时,由于必须执行factorial,而factorial已经不再是函数,所以就导致了错误.

arguments.callee可以解决这个问题,arguments.callee是一个指向正在执行的函数的指针。

*/

function factorial(num)

{

    if(num<1){

        return 1;

    }else{

        return num*arguments.callee(num-1);

    }

}

var anotherFactorial=factorial;

factorial=null;

alert(anotherFactorial(4));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 递归