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


本文转载:CSDN博客