在前面的讲解中,定义函数时设置的形参数量决定着可以接收实参的数量,例如:
<!DOCTYPE html>
<html>
<head>
<title>用arguments接收不定数量的参数</title>
<script src="./jquery.js"></script>
</head>
<body>
<script type="text/javascript">
function f(m,n){
return m + n;
}
console.log( f(1,2,3) );
</script>
</body>
</html>
在以上代码中,由于参数只定义了两个参数,所以我们不论给函数传入多少实参,它都只能接收到前两个,所以结果是3。
假如我们有这样一种需求,让一个函数计算所有参数的和。
这时,我们可能为函数传入5个参数,也可能传入10个参数,参数数量是不定的,那么函数的形参应该如何定义呢?
这时就用到了本节所讲的知识点:arguments
请看以下代码:
<!DOCTYPE html>
<html>
<head>
<title>用arguments接收不定数量的参数</title>
<script src="./jquery.js"></script>
</head>
<body>
<script type="text/javascript">
function fn(){
//arguments对象(类数组的对象): 用来获取所有的实参
// console.log(arguments);
// console.log(arguments[0]);
// console.log(arguments[1]);
// console.log(arguments.length);
var sum = 0;
for(var i=0; i<arguments.length; i++){
//arguments[i] 是一个实参
sum += arguments[i];
}
return sum;
}
console.log( fn(1) );
console.log( fn(1,2) );
console.log( fn(3, 4, 5) );
</script>
</body>
</html>
使用arguments来接收参数时,我们不需要给函数定义形参,在调用函数时可以传入任意数量的参数,在函数内部只需要遍历arguments这个对象即可得到所有的实参。
|