Javascript 函数中的arguments.callee

来源:互联网 发布:日本硕士 知乎 编辑:程序博客网 时间:2024/05/18 00:38
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        //方法1,这种方法当函数名fac指向新的函数后,就不能实现递归阶乘了
//        function fac(num) {
//            if (num <= 1) {
//                return 1;
//            }
//            else {
//                return num * fac(num - 1);
//            }
        //方法2
        function fac(num) {
            if (num <= 1) {
                return 1;
            }
            else {
                return num * arguments.callee(num - 1);   //arguments.callee表示当前方法的引用
            }
        }
        window.onload = function () {
            var func = fac;
            fac = function () {   //指向新的函数
                return 1;
            }
            alert(func(5));    //使用方法一将输出5,使用方法二将输出5的阶乘值
            alert(fac(5));     //输出1
        }
    </script>
</head>
<body>


</body>
</html>
原创粉丝点击