arguments是JS的一个内置对象,我们知道在js中传递的是形参,如果我们没有写参数,却传入了参数,该怎么拿到这个参数呢?arguments可以帮我们拿到这个参数。每一个函数都有一个arguments对象,它包括了函数所要调的参数,通常我们把它当作数组使用,用它的arguments.length得到参数数量,argument[i]获得传入的下标为i的参数值。
arguments.length——获得传入的参数个数!
argument[i]——获得传入的下标为i的参数值。
另外我们还需要知道的是arguments对象只有函数开始时才可用。
使用方法:
例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
function one(){
var mingzi = '';
var len = arguments.length;
for(var i=0;i<len;i++){
mingzi+= arguments[i];
}
document.write(mingzi)
}
one('李','三','刀')
</script>
</body>
</html>
在js语法中不支持重载,但是我们可以用arguments来模拟重载,什么是重载呢?就是在js中一个函数可以重复使用而且不会被覆盖。
下面这个例子就是函数名相同但是参数不相同:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
function two(a,b){
var sum = a+b;
document.write(sum)
}
two(5,4)
function two(c,d,e){
var sum1 = c*d*e;
document.write(sum1)
}
two(8,4,1)
//输出的结果是 NaN32 ,可以看出来把第一个函数覆盖掉了。
</script>
</body>
</html>
那我们使用arguments就可以轻松解决这个问题了,请看下面的例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
function two(){
var len = arguments.length;
if(len==2){
var sum=0;
for(var i=0;i<len;i++){
sum+=arguments[i];
}
}else if(len>2){
var sum=1;
for(var i=0;i<len;i++){
sum*=arguments[i];
}
}
document.write(sum+" ");
}
two(5,4);
two(8,4,1);
//输出的结果为9 32,说明我们的同名函数没有被覆盖,可以重复利用。
</script>
</body>
</html>
如果有不对的地方请大家指出来,一起学习,一起进步。