JavaScript允许函数有不定数目的参数,所以我们需要一种机制,可以在函数体内 部读取所有参数。这就是arguments对象的由来,我将详细介绍Javascript中的arguments对象和使用方法。
其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中国每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素。arguments.length为函数实参个数,arguments.callee引用函数自身。
arguments他的特性和使用方法
特性:
arguments对象和Function是分不开的。因为arguments这个对象不能显式创建,arguments对象只有函数开始时才可用。
arguments使用方法
通过方括号语法访问每一个元素
1 2 3 4 5 6 7 8 9 | var fun = function(one) { console.log(arguments[0]); console.log(arguments[1]); console.log(arguments[2]); } fun(1, 2, 3) // 1 // 2 // 3 |
通过length属性,查看到底要几个参数
1 2 3 4 5 6 | function fun() { return arguments.length; } fun(1, 2, 3) // 3 fun(1) // 1 fun() // 0 |
参数赋值(“严格模式下不允许”)
1 2 3 4 5 6 | var fun = function(a, b) { arguments[1] = 2; return a + b; } fun(1, 1) // 3 |
我们知道每一个对象都有自己的属性,arguments对象也不例外,首先arguments的访问犹如Array对象一样,
用0到arguments.length-1来枚举每一个元素。下面我们来看看callee属性,返回正被执行的Function 对象,
也就是所指定的 Function 对象的正文。callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用。
callee 属性的初始值就是正被执行的 Function 对象,这允许匿名的递归函数。
var sum=function(n){
if(1==n) {
return 1;
} else {
return n - arguments.callee(n-1);
}
}
alert(sum(6));
通俗一点就是,arguments此对象大多用来针对同个方法多处调用并且传递参数个数不一样时进行使用。根据arguments的索引来判断执行的方法。