JS之arguments

JS是一门弱类型语言,对于函数的参数个数没有要求需要与实参相同,也没有要求传递的类型要一样,那么如果要获取传递过来的实参,可以通过什么方法呢?对,就是arguments

1)arguments是什么呢?

  • arguments是一个类数组对象,包含了函数中传递进来的所有实参。类数组是因为它可以通过arguments[0]指定下标的这种形式来获取实参,但是它不是数组
function test(a,b,c){
    console.log(arguments instanceof Array);//false
    console.log(typeof arguments);//Object
}

2)特点:

  • 通过下标来获取arguments中的元素并改变其值会影响到形参的值
  • arguments.callee指向当前正在运行的函数
  • arguments.length为传递的实参的个数
function test(a,b,c){
    console.log(a);//1
    arguments[0]=4;
    console.log(a);//4
    console.log(arguments.callee);//function test(a,b,c){...}
    console.log(arguments.length);//3
}
test(1,2,3);

3)关于callee的使用

举例:要求实现一个从1+...+n的函数,运行后就销毁

这是可以通过匿名函数和arguments.callee属性来递归调用,如:

(function(n){
    if(n<=1){
        return 1;
    }else{
        return n+arguments.callee(n-1);
    }
})(100)

4)补充知识点:

获取函数的形参,通过Function.length

获取函数的名称,通过name属性

如:

function test(a,b,c){
    console.log(test.length);//3
    console.log(test.name);//test
}
test(1,2);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值