JavaScript函数可以以任意数目的参数来调用, 而不管函数定义中的参数名字有多少个。由于函数是宽松类型的,它就没有办法声明所期望的参数的类型,并且,向任何函数传递任意类型的参数都是合法的。
当调用一个函数的参数少于声明的参数个数的时候,其他的参数就有一个undefined的值。编写这样的函数常常是很有用的:某些参数为可选的并且在调用函数的时候可以忽略它们。要做到这一点,必须能够为忽略掉的参数分配一个合理的默认值。例如:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<script>
function copyPropertyNamesToArray(o,a){
a=a||[];
for(var prop in o){
a.push(prop);
}
return a;
}
</script>
</head>
<body>
<script>
var o={};
o.x=1;
o.y=2;
o.z=3;
p={"name":"Tom"};
var test=copyPropertyNamesToArray(o);
alert(test[0]);
alert(test[1]);
alert(test[2]);
alert(copyPropertyNamesToArray(p,test));
</script>
</body>
</html>
在本例中,如果a已经定义了并且非null,它返回a,即便a是空的。否则它返回一个新的空数组。
注意在使用可选的参数来设计函数的时候,应该确保把可选的参数放在参数列表的末尾,以便它们可以被忽略。