调用函数时,系统传递两个参数。一个是this,另一个是arguments。
arguments封装实参的对象:
1.arguments是一个类对象,它也可以通过索引来操纵数据。也可以获得长度。
2.在函数调用时,我们所传递的参数都会在arguments保存。
3.即使不定义形参,也可以通过agrumengts来使用实参。
4.里面有个属性callee,这个属性对应的一个函数对象,即正在执行的函数对象
function fun() {
console.log(arguments);
console.log(arguments.callee)
}
fun("孙悟空", "猪八戒", "沙和尚");
输出:
{ '0': '孙悟空', '1': '猪八戒', '2': '沙和尚' }
[Function: fun]
arguments可以实现函数重载的功能。如:
function add() {
var len = arguments.length;
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
console.log(add(1, 2, 3));
console.log(add(1, 2, 4, 5, 6, 9, 7));
函数的不同参数个数相当于进行函数重载。实际上是用arguments这种方法实现了函数重载。