<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>函数里的arguments属性</title>
<script type="text/javascript">
/*
arguments属性:
1.在JavaScript中每一个函数都包含一个arguments属性。
2.arguments属性是一个数组。
3.在函数被调用的时候,是先将实参输入到函数的arguments属性中,再由arguments将数据传递给形参。
4.arguments属性的存在,可以将JavaScript中函数在调用时传递的实参与函数的形参进行隔离,增强函数调用的灵活性
5.arguments属性只能在函数体内使用,不能在函数体外使用。
*/
function f() {
alert("f 方法执行了...")
}
//以下三种调用方式都可以成功
f();
f(10);
f(10,20);
//实参的个数与形参的个数不同也能调用成功,就是因为有arguments属性的存在
//下面声明一个函数证明arguments属性的存在
function f1() {
alert("f1在运行时得到的实参个数是:" + arguments.length);
//循环遍历得到的实参
for (let i = 0; i < arguments.length; i ++){
alert("第" + (i + 1) + "个实参是:" + arguments[i] + "; 其参数类型是:" + typeof arguments[i]);
}
}
f1(10,"abc",true,new Date());
// 需求:要求 编写 一个函数。用于计算所有参数相加的和并返回
function sum(num1,num2) {
var result = 0;
for (var i = 0; i < arguments.length; i++) {
//如果参数类型是number就累加,否则就跳过
if (typeof(arguments[i]) == "number") {
result += arguments[i];
}
}
return result;
}
alert( sum(1,2,3,4,"abc",5,6,7,8,9) );//45 (1+2+3+4+5+6+7+8+9的结果)
</script>
</head>
<body>
</body>
</html>