arguments

178 阅读1分钟

www.cnblogs.com/10zhan/p/17…

juejin.cn/post/684490…

arguments 是一个类似数组的对象, 对应于传递给函数的参数。

[...arguments].slice(1)

注意,arguments不是数组不能直接用数组方法,需要转化为数组才能用。arguments.slice(1)是错误的

arguments.length为函数实参个数,arguments.callee引用函数自身。

www.jianshu.com/p/d7ed5ade6…

应用:

实现匿名的递归函数

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++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。

这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。)