先不多说,先写一段代码,后面的在详细的额说明
---------------------------------------正文分割线-----------------------------------------------------------------------------
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>
对于documents数组的实验
</title>
</head>
<body>
<p>求逗比的数量</p>
<script>
var sum=function(){
var sum=0,i;
for(i=0;i<arguments.length;i+=1)
{
sum+=arguments[i];
}
return sum;
};
document.write(sum(12,13,14,15,16));
</script>
</body>
</html>
这个是最近自己在看arguments数组的一点收获,可能有的人知道,但是我觉得可能有的人还理解的不是很好,所以我在这里写点关于自己的理解。
提到arguments数组那么我们不得不提到我们的JavaScript中的有关参数的要求,由于JavaScript的语言特性,我们可以传入若干个形参(这里说形参好像不太准确,但是为了理解先这样叫吧。)而且JavaScript不会管你的这些形参到底是用还是不用,同样更不会管你到底是用几个,但是我们所有的传入的参数都保存在arguments数组当中,也就是说我们给某个函数每一个形参,都存在arguments数组当中,我们可以在函数体内通过arguments的对象访问这个参数数组,从而获得传递给参数的每一个参数。
那么现在问题来了,看看arguments数组的特性你会发现我们可以根据arguments的length属性来获取我们到底传入了几个形参。这就很有意思了,JavaScript表示我这个语言没有重载,但是机智的设计师表示你可以用“伪重载”啊,那么这个就很好玩,我们同样可以类似于java的重载写一段“伪重载”代码,来实现相应的识别调用
-------------------------------------------------------------代码分割线-------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>伪重载的实现</title>
</head>
<body>
<script>
function sum(){
if(arguments.length==1)
{
alert(arguments[0]+10);
}
if(arguments.length==2)
{
alert(arguments[0]+arguments[1])
}
}
sum(30,20);
</script>
</body>
</html>
如果大家有觉得有什么不对的,欢迎指出
热门评论
不知道你在说什么,而且感觉不厉害
是类数组,不是数组。
传入的是形参,总感觉有什么不对……