重载(overload): 相同函数名,不同参数列表的多个函数
可在调用时,根据传入参数的不同
自动选择对应的函数执行!
为什么: 减轻调用者的负担!
问题: js的语法不支持重载!
js不允许多个同名函数同时存在。
如果同时存在,最后定义的函数会覆盖之前所有同名函数
解决: arguments对象
什么是arguments: 函数中,专门接收所有传入的参数值的对象。
arguments是类数组对象: 长的像数组的对象
只有两点和数组相同:
1. 都可用下标访问每个元素
比如: 获得第二个参数值: arguments[1]
2. 都有length属性记录参数个数:
比如: arguments.length
强调: 类数组对象不是数组,
几乎所有数组API,都不能调用!
可在调用时,根据传入参数的不同
自动选择对应的函数执行!
为什么: 减轻调用者的负担!
问题: js的语法不支持重载!
js不允许多个同名函数同时存在。
如果同时存在,最后定义的函数会覆盖之前所有同名函数
解决: arguments对象
什么是arguments: 函数中,专门接收所有传入的参数值的对象。
arguments是类数组对象: 长的像数组的对象
只有两点和数组相同:
1. 都可用下标访问每个元素
比如: 获得第二个参数值: arguments[1]
2. 都有length属性记录参数个数:
比如: arguments.length
强调: 类数组对象不是数组,
几乎所有数组API,都不能调用!
何时创建: 在调用函数时,自动创建的函数局部变量!
eg:
<script>
function add(/*n个加数*/){
//遍历arguments中每个元素,同时声明sum=0;
for(var i=0,sum=0;i<arguments.length;i++){
//将当前元素的值累加到sum上
sum+=arguments[i];
//遍历结束
}//返回sum
return sum;
}
//测试
console.log(add(3,5,8));//16
console.log(add(12,14,16,18));//60
console.log(add(1,2,3,4,5));//15
</script>