//=================任意數求和:無論傳遞幾個實參值進來,咱們都能求出對應的和// 有一個具體的問題:基於形參變量來接收求和的數字已經不現實了,由於咱們也不知道要傳遞多少個值,也就沒法肯定要定義多少個形參變量了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);
複製代碼