Rest 参数:
基本构造:
...变量名
介绍:
无论函数是如何定义的,通过定义Rest来定义传入的参数,你都可以在调用它时传入任意数量的参数。
举例(计算多个数之和):
function Sum(...a){
var ans=0;
for (let num of a) ans += num;
return ans;
}
console.log(Sum(1,2,3,4,5,6));
补充:
代码:
let a of b
解释:
从b中依次取值并将值赋给a,知道b中的值取完
arguments变量:
介绍:
arguments 是一个特殊类数组对象可以在函数中被访问,该对象以参数在参数列表中的索引作为键,存储所有参数。【注:尽管 arguments 是一个类数组,也是可迭代对象,但它终究不是数组。它不支持数组方法,因此我们不能调用 arguments.map(...) 等方法。(当我们需要这些功能时,最好使用 rest 参数)】
举例:
function Sum(){
var ans=0;
for(var i=0;i ans+=arguments[i]; } return ans; } console.log(Sum(1,2,3,4,5,6)); Spread语法: 介绍: 此语法(与Rest类似)与上方(Rest)的效果是完全相反的(上面的效果是将多个变量转化为数组,而Spread是将一个数组拆分为多个数) 举例: let a=[3, 5, 1]; console.log(Math.max(...a)); 补充: ...的辨析: (1)当出现...时,不是Rest,就是Spread (2)若 ... 出现在函数参数列表的最后,那么它就是 rest 参数,它会把参数列表中剩余的参数收集到一个数组中。 (3)若 ... 出现在函数调用或类似的表达式中,那它就是 spread 语法,它会把一个数组展开为列表。