JS中arguments对象

与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。

开发者定义的函数都可以接受任意个数的参数而无需跟定义的函数相匹配(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的参数函数都将会忽略掉。

arguments 对象

arguments对象和Function是分不开的。因为arguments这个对象不能显式创建,arguments对象只有函数开始时才可用。

无需指出参数名,就能访问参数:arguments不是数组,而是一个类似数组的对象,但是它访问单个参数的方式与访问数组元素的方式相同:arguments[0]、arguments[n]

function sayHi(){
  console.log(arguments[0]);
}
sayHi("aaa","bbb");    //aaa

arguments.length 得到参数的个数

function howManyArgs() {
  console.log(arguments.length);
}

howManyArgs("string", 45); //2
howManyArgs();          //0
howManyArgs(12);          //1

callee属性:返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用,大多用来针对同个方法多处调用并且传递参数个数不一样时进行使用

var sum = function (n) {
  if (1 == n) {
    return 1;
  } else {
    return n + arguments.callee(n - 1);
  }
}
console.log(sum(6));

 

猜你喜欢

转载自www.cnblogs.com/wenxuehai/p/10329724.html