//=================任意数求和:无论传递几个实参值进来,咱们都能求出对应的和// 有一个具体的问题:基于形参变量来接收求和的数字已经不现实了,由于咱们也不知道要传递多少个值,也就没法肯定要定义多少个形参变量了functionsum() {
// 循环ARGUMENTS中的每一项(每个传递进来的实参),都累加给TOTAL,最后就能求出和了let total = 0;
for (let i = 0; i < arguments.length; i++) {
// 把传递进来的实参信息都转换为数字:排除掉非有效数字或者字符串let item = Number(arguments[i]);
if (!isNaN(item)) {
// 有效数字
total += item;
}
}
console.log(total);
}
sum(); //=>0
sum(10); //=>10
sum(10, 20); //=>30
sum(10, 20, 30, 40); //=>100
sum(10, 20, 'AA'); //=>30 过滤掉非有效的数字
sum(10, '20'); //=>30 若是是字符串,不能是字符串拼接,还应该是数学相加复制代码
四、ES6中的剩余运算符
语法:
...args(args为随便起的变量名)
定义:
把传递进来的实参信息,都以数组的形式保存到args变量中
使用:
若是不想在剩余参数中收集全部参数,则能够组合常规参数和剩余参数。
一个常规参数,获取一个参数的值。而后剩下的参数 ...args 接收剩余的参数。
上面的🌰用剩余运算符实现:
function sum(...args) {
// ...args:ES6中的剩余运算符,把传递进来的实参信息,都已数组的形式保存到ARGS变量中
let total = 0;
for (let i = 0; i < args.length; i++) {
let item = Number(args[i]);
if (!isNaN(item)) {
total += item;
}
}
console.log(total);
}
sum(10, 20, 30, 40);
复制代码