ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ //=================任意数求和:不管传递几个实参值进来,我们都能求出对应的和 // 有一个具体的问题:基于形参变量来接收求和的数字已经不现实了,因为我们也不知道要传递多少个值,也就无法确定要定义多少个形参变量了 // 解决方案: // 1. arguments函数内置的实参集合:不管我们设置与否形参,再或者是否传递了实参,ARGUMENTS始终都会存在(ES6箭头函数中没有ARGUMENTS) =>只能出现在函数体中 // 2. 使用ES6中的剩余运算符 function sum() { /* * ARGUMENTS是一个类数组集合(类似数组,但是不是数组,和元素集合HTMLCollection类似) * =>根据索引记录了每一个传递进来的实参信息(和是否定义形参变量没有关系,ARGUMENTS中包含了所有传递进来的实参信息) * =>LENGTH属性代表传递实参的个数 */ // 循环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 如果是字符串,不能是字符串拼接,还应该是数学相加 //==>以后会详细讲,现在看一眼 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); ~~~