JS Function 函数剩余参数
由来
我们知道 JS 函数内部有个 arguments 对象,可以拿到全部实参。 现在 ES6 给我们带来了一个新的对象,可以拿到除开始参数外的参数,即剩余参数
写法
是程序员自定义的一个普通标识符,只是需要在前面加上三个点: ...
function func(a, ...rest) {
console.log(a)
console.log(rest)
}
func(1)
func(1, 2, 3, 4)
// 1
// []
// 1
// [2,3,4]
在前面定义 2 个参数
function func(a, b, ...rest) {
console.log(a, b)
console.log(rest)
}
func(1, 2)
func(1, 2, 3, 4)
// 12
// []
// 12
// [3,4]
后面不要再跟其它的参数了,不然会报错
function func(a, ...rest, b) {}
// SyntaxError:parameter after rest parameter
使用剩余参数后,函数的 length 属性会发生一些变化
function func(a, b, ...rest) {}
func.length //(指参数的个数) 2
即 length 不包含 rest,为 2。
剩余参数前面是否可以一个参数都没有呢? 答案是肯定的
function func(...rest) {
console.log(rest)
}
func(1) // [1]
func(1, 2, 3, 4) // [1,2,3,4]
rest 不能和 arguments 一起使用,会报错
function func(...rest) {
console.log(rest)
console.log(arguments)
}
//SyntaxError:'arguments' object may not be used in conjunction width a rest parameter(火狐,谷歌没有)
arguments 和剩余参数的区别
- arguments 是一个伪数组(Array-like)
- 剩余参数是一个真正数组(Array),具有 Array.prototype 上的所有方法
- arguments 上有 callee,callee 上有 caller
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论