javascript的剩余参数
一、js中没有重载的机制
在js中是没有重载的,如果需要声明多个重名的函数,则不论函数形参个数是否一致,最后声明的函数有效,其他函数全部无效
二、使用arguments对象获取函数的实参
js函数声明时,无论是否显式的提供了形参,在函数调用时,arguments都能获取到实参
1 function fn() { 2 console.log(arguments) 3 } 4 5 fn(1,2,3) // Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ] 6 7 function fn1(a,b) { 8 console.log(arguments) 9 } 10 11 fn1(11,22,33) // Arguments(3) [11, 22, 33, callee: ƒ, Symbol(Symbol.iterator): ƒ]
三、使用ES6提供的剩余参数
arguments 是一个可迭代对象 并不是一个真正的数组,无法使用数组的方法 使用起来比较麻烦
ES6中 js为我们提供了函数的剩余参数,可用于替代arguments 函数的剩余参数需要在参数列表中定义
需要注意的是必须定义在参数列表的最后
1 function fn(a, b, ...args) { 2 console.log(args) 3 } 4 5 fn(1,2,3,4,5) // [3,4,5]

浙公网安备 33010602011771号