arguments 是一个类似数组的对象, 对应于传递给函数的参数。
[...arguments].slice(1)
注意,arguments不是数组不能直接用数组方法,需要转化为数组才能用。arguments.slice(1)是错误的
arguments.length为函数实参个数,arguments.callee引用函数自身。
应用:
实现匿名的递归函数
var sum = function (n) {
if (1 == n) {
return 1;
} else {
return n + arguments.callee(n - 1); //6 5 4 3 2 1
}
};
alert(sum(6));
//输出结果:21
其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。
(重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。
这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。)