`arguments`对象是所有(非箭头)函数中都可用的**局部变量**。你可以使用`arguments`对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。例如,如果一个函数传递了三个参数,你可以以如下方式引用他们:
~~~js
arguments[0]
arguments[1]
arguments[2]
~~~
`arguments`对象不是一个[`Array`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Array "entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。") 。它类似于`Array`,但除了length属性和索引元素之外没有任何`Array`属性。例如,它没有 [pop](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/pop "JavaScript/Reference/Global_Objects/Array/pop") 方法。但是它可以被转换为一个真正的`Array`
~~~js
var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);
// ES2015
const args = Array.from(arguments);
const args = [...arguments];
~~~
定义链接字符串函数
~~~js
function myConcat(separator) {
var args = Array.prototype.slice.call(arguments, 1);
return args.join(separator);
}
~~~
~~~js
// returns "red, orange, blue"
myConcat(", ", "red", "orange", "blue");
~~~
: