JavaScript高级程序设计

3.7 arguments

关于函数参数

function(num){
}//num 即为命名参数
  • 函数的命名参数只提供便利,非必须。任何参数都可以通过arguments对象来获取
  • arguments对象只是与数组类似,但并不是数组的实例
  • arguments的值始终与对应命名参数的值保持一致,但是他们的内存空间是独立的

函数重载
为一个函数编写两个定义,只要函数签名不同即可,即函数重载。

在ECMAscript函数中,由于不存在函数签名的定义,所以不存在函数重载。但是可以通过arguments对象来检测传入参数的类型或者数量,做出不同的反应,模仿函数重载。

arguments callee

callee是arguments的一个属性,在哪一个函数中运行,它就代表哪一个函数。 一般用在匿名函数中,实现对自身的调用

//用于验证参数
//arguments.length 实参的长度   
//arguments.callee.length形参(定义时规定的需要的参数)长度 
function calleeLengthDemo(arg1, arg2) {
    if (arguments.length==arguments.callee.length) {
    window.alert("验证形参和实参长度正确!");
    return;
} else {
    alert("实参长度:" +arguments.length);
    alert("形参长度: " +arguments.callee.length);
    }
}
//实现10的阶乘
 (function(n){
    if(n > 1)    return n* arguments.callee(n-1);
    return n;
})(10);

注意:在严格模式中,废弃了该属性,不推荐使用 MDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值