在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量。

1、什么是arguments?

这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的[i]和.length。

2、有什么作用?

js语法不支持重载!但可用arguments对象模拟重载效果。

arguments对象:函数对象内,自动创建的专门接收所有参数值得类数组对象。
arguments[i]: 获得传入的下标为i的参数值
arguments.length: 获得传入的参数个数!

重载:

  程序中可定义多个相同函数名,不同参数列表的函数,
  调用者不必区分每个函数的参数,
  执行时,程序根据传入的参数个数,自动判断选择哪个函数执行。

例子如下:

// 1、如果用户传入一个参数,求平方
function sum(a){
console.log(a*a);
} //如果用户传入两个参数,就求和
function sum(a,b){
console.log(a+b);
}
sum(4); //?
sum(4,5); //?

上述例子中本意是想让同名函数sum()根据参数不同输出不同结果,但是sum是函数名字,本质也是个变量,

第二个会覆盖第一个,所以上述的正确输出答案是:NaN,9.所以这样显然不可以。

如果用arguments,就简单多了。

如下2个例子:

//2、
function calc(){
//如果用户传入一个参数,求平方
if(arguments.length==1){
console.log(arguments[0]*arguments[0]);
}else if(arguments.length==2){
//如果用户传入两个参数,就求和
console.log(arguments[0]+arguments[1]);
}
}
calc(4); //
calc(4,5); //
/*3、无论用户传入几个数字,都可以求和*/
function add(){
//arguments:[]
//遍历arguments中每个元素,并累加
for(var i=0,sum=0;i<arguments.length;sum+=arguments[i++]);
return sum;//返回和
} console.log(add(1,2,3)); //
console.log(add(1,2,3,4,5,6)); //

这就是JS利用arguments重载的效果,简单理解就是一个函数重复利用.

arguments.length是有实参决定,即函数调用时候里面的参数个数决定!

最新文章

  1. C语言移位算符&quot;&gt;&gt;&quot;
  2. OData V4 系列 Ajax请求 CRUD
  3. python merry -- error handling in the real world
  4. C#基础入门一
  5. java 22 - 21 多线程之多线程的代码实现方式3
  6. 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j
  7. Linux更改主机名的最简单方法
  8. Codeforces Round #253 Div2 D.Andrey and Problem 概率+贪心
  9. VB的gdi+相关声明
  10. &quot;is not on any development teams &quot; Xcode的账号错误问题
  11. 基于visual Studio2013解决C语言竞赛题之0403字符统计
  12. C#基础总结之Attribute
  13. GMap学习笔记
  14. 关于NLog的target和Layout
  15. linux命令之crontab定时执行任务
  16. year:2017 month:7 day:20
  17. 通过crontab调度java -jar任务提示&quot;nohup: failed to run command `java&#39;: No such file or directory&quot;
  18. HDU - 6394 Tree(树分块+倍增)
  19. Exactly-Once 投递语义
  20. JetBrains WebStorm打开多个项目project的方法

热门文章

  1. css强制换行显示省略号之显示两行后显示省略号
  2. SAP日志表CDHDR 和
  3. JavaWeb【一、简介】
  4. 【2017-03-28】JS基础、windows对象、history对象、location对象
  5. Python——列表赋值的若干用例
  6. 【JS】类型检测
  7. python中sys.argv[]用法
  8. mybatis使用@Insert @SelectKey 执行插入语句时获得主键自增长值(转)
  9. 让create-react-app支持sass,less
  10. nodejs (下)(设置响应参数)