Arguments object

        function max1(){
            console.log(arguments)
        }
        max1(2,5434,"hello");

检查参数个数,引用arguments.length

    <script>
        function args() {
            console.log(arguments.length);
        }
        args(10);
        args("how","many","arguments");
        args("args",100);
    </script>

模拟函数重载

    <script>
        function  doAdd() {
            if(arguments.length==1){
                console.log(arguments[0]+13);
            }else if(arguments.length==2){
                console.log(arguments[0]+arguments[1]);
            }
        }
        doAdd(10);
        doAdd(13,55);
    </script>


求最大值

        function minValue() {
            var minValue = arguments[0];

            for(var i=1; i<arguments.length;i++){
                minValue = Math.min(minValue,arguments[i]);
            }

            return minValue;
        }

        console.log(minValue(100,-1234,2525,-20));

JavaScript中的caller和callee属性

caller返回一个对函数的引用,该函数调用了当前的函数

funcitonName.caller   functionName对象是所执行函数的名称

说明

对于函数来说,caller属性只有在函数执行时才有定义。如果函数由JavaScript程序的顶层调用,那么caller包含的就是null

        function callerDemo(){
            if(arguments.caller){
                var a= callerDemo.caller.toString();
                console.log(a);
            }else{
                console.log("This is a top function");
            }
        }
        function handleCaller(){
            callerDemo();
        }
        handleCaller();
        function calleeDemo() {
            console.log(arguments.callee);
        }
        calleeDemo();
    </script>

callee

返回正在被执行的Function对象,也就是所指定的Function对象的正文

【function】arguments.callee

可选项function参数是正在执行的Function对象的名称

说明:

callee属性的初始值就是正在执行的Function对象。

callee属性是arguments对象的一个成员,它表示对函数本身的引用,这有利于匿名函数的递归或者保证函数的封装性。

arguments.length 实参长度,argument.callee.length是行参长度,由此可判断实参长度是否与行参长度一致

验证参数

        function calleeLength(arg1,arg2) {
            if(arguments.length == arguments.callee.length){
                console.log("行参与实参的长度一样!");
                return;
            }else{
                console.log("实参的长度:"+ arguments.length);
                console.log("行参的长度:"+ arguments.callee.length);
            }
        }

        calleeLength(10,23);


递归函数:

        /*递归计算*/
        var sum = function (n) {
            if(n<=0)
                return 1;
            else
                return n+arguments.callee(n-1);
        }
        console.log(sum(10));

        /*一般递归函数*/
        var count =function (n) {
            if(n<=0)
                return 1;
            else
                return n+count(n-1);
        }
        console.log(count(10));




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值