笔者在学习ECMAScript中会将arguments对象与数组混淆,如今理解清楚以后特来此记下,但愿帮助你们理解。javascript
javascript是个很宽松的语言,ECMAScript中函数不介意传递进来多少个参数,也不在意传进来参数是什么数据类型。即使你定义的函数只接收两个参数,在调用这个函数时也未必必定要传递两个参数,能够传递一个、三个甚至不传递参数,解析器也不会有怨言。
为何会如此呢?
由于ECMAScript中的参数在内部是用一个数组来表示的。
在函数体内能够经过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数。java
function sayHi(){ alert("Hello " + arguments[0] + "," + arguments[1]); }
缘由:arguments对象只是与数组相似(它并非Array的实例),能够经过使用方括号语法访问它的每个元素(第一个元素arguments[0],第二个元素arguments[1],以此类推;使用length属性来肯定传递进来多少个参数)数组
function howManyArgs(){ alert(arguments.length); } howManyArgs("string",45); //2
arguments对象能够与命名参数一块儿使用:函数
function doAdd(num1,num2){ if(arguments.length == 2){ alert(arguments[0] + num2); } }