Arguments 对象 与 ...剩余参数

170 阅读1分钟

嘿嘿,今天重新认识一下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转变为真数组的操作