嘿嘿,今天重新认识一下arguments对象 和 剩余参数
arguments
arguments 是一个对应于传递给函数的参数的类数组对象。
arguments可读可写
是一个伪函数,可以通过下标获取元素
可读:arguments[1]
可写:arguments[1] = **
是一个类数组,使用不了数组的push(),pop()等方法,如何将arguments转变为一个真正的数组呢
// ES2015之前
let arr = Array.prototype.slice.call(arguments)
let arr = [].prototype.slice.call(arguments)
// ES2015之后
let arr = Array.form(arguments)
let arr = [...arguments]
属性:
arguments.length传递给函数的参数数量。
arguments.callee指向参数所属的当前执行的函数。
...剩余函数
在MDN文档中明确写着一句话,如果你编写兼容 ES6 的代码,那么优先推荐使用 剩余参数 。这是为什么呢?
语法
function(a,b, ...other){
console.log(other[1])
}
这里的other是一个真数组
剩余函数来自ES6拓展运算符...的用法
类似于代码:
let { name, age, ...other } = 对象a
这里的other是一个对象,接受了对象a中除了name和age之前剩余的属性
好处
好处我感觉就是省去了将arguments转变为真数组的操作