剩余参数 - 2019-02-22
2019-02-22 本文已影响0人
勇敢的小拽马
- 2019-02-22 创建
与 arguments 不同
for example:
function func(a, ...args) {
console.log(a)
console.log(args)
}
func(1)
func(1, 2, 3, 4)
image.png
function func(a, b, ...args) {
console.log(a, b)
console.log(args)
}
func(1, 2)
image.png
function func(...args) {
console.log(args)
}
func(1) // [1]
func(1, 2, 3, 4) // [1,2,3,4]
后不可再跟参数
function func(a, ...args, b) {
}
image.png
函数 length 不包括 args
当您使用剩余参数后,函数的length属性会发生一些变化
function func(a, b, ...args) {
}
func.length // 2
即length不包含args,为2。
与 arguments 区别
- arguments是一个伪数组(Array-like)
- 剩余参数是一个真正数组(Array),具有Array.prototype上的所有方法
- arguments上有callee,callee上有caller
function func(a, ...args) {
console.log(args instanceof Array)
}
func(1, 2) // true
请注意,rest不能和arguments一起使用,会报错
function func(...args) {
console.log(args)
console.log(arguments)
}
image.png