JavaScript中的声明展开和剩余参数

es6中, (...)可以用作声明展开和剩余参数
es5中,我们可以用apply()函数把数组转化成参数。es6也有对应的方法,展开运算符(...)

用作展开运算符时

function sum(x = 1, y = 2, z = 3) {
  return x + y + z;
}
 let params = [3, 4, 5];
// es5 apply() 把数组转换成参数
console.log(sum.apply(undefined, params))
// es6 展开运算符(...)把数组转换成参数
console.log(sum(...params));  => 12

用作剩余参数时

在函数中,展开运算符(...)也可以代替arguments,这时充当剩余参数使用

function restParam(x, y, ...a){
  return (x + y) * a.length
}

console.log(restParam(1, 2, ''hello", true, 7))    =>   9

不过也可以通过其他方式去实现剩余参数的功能

function restParam(x, y){
  // 这里表示从下标值为2的参数开始切割,并把切割后的参数转换成数组,对于es6中的展开运算符是一个逆过程
  var a = Array.prototype.slice.call(arguments, 2)
  return (x + y) * a.length
}
console.log(restParam(1, 2, ''hello", true, 7))    =>   9
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容