JavaScript参数对象MDN指南

JavaScript参数对象MDN指南,javascript,arguments,Javascript,Arguments,有人能详细解释一下这行代码中的每个术语的实际用途吗?我知道这是把arguments对象转换成一个真正的数组,但我不明白它是怎么做的 var args = (arguments.length === 1?[arguments[0]]:Array.apply(null, arguments)); arguments对象是每个函数本地的类似数组的对象(不是数组),它包含传递到函数中的每个参数的条目 在上面,我们使用Array.prototype创建一个数组实例。它也可以这样编写var args

有人能详细解释一下这行代码中的每个术语的实际用途吗?我知道这是把arguments对象转换成一个真正的数组,但我不明白它是怎么做的

   var args = (arguments.length === 1?[arguments[0]]:Array.apply(null, arguments));
arguments
对象是每个函数本地的类似数组的对象(不是数组),它包含传递到函数中的每个参数的条目

在上面,我们使用
Array.prototype
创建一个数组实例。它也可以这样编写
var args=[].slice.call(参数)

然后我们使用
slice()
方法。只要将方法绑定到对象,Slice就可以用于类似数组的对象(在本例中是我们的
参数
对象)。对于本例中的绑定,我们使用
call()
。您还可以使用其他绑定函数,如
apply()

call()
方法接受
参数
对象,该对象是为
slice()提供的

值得注意的是,在EcmaScript 2015中,这可以通过使用和以更简单的方式完成。以下为ES2015等效标准:

function someFunc(...args) {
    return args;
}
someFunc(1,2,3);  //[1, 2, 3]

无论你在哪里找到代码,都把它扔掉。尽可能地。用一个习惯用语来代替。哪些术语不清楚?为什么???这是对守则的严厉反应。我不理解以下部分:arguments.length==1?[arguments[0]]:如果
arguments
对象的长度为
1
(正好是一个参数),那么它将创建一个数组文字,该参数作为唯一的元素,否则….尽管您所说的一切都是正确的,并且演示了正确的方法,你的帖子没有回答这个问题。我在编辑OP之前开始整理我的答案,添加了代码示例。因为我没有这个上下文,所以我演示了一个关于如何从arguments对象创建数组的简单示例。
function someFunc(...args) {
    return args;
}
someFunc(1,2,3);  //[1, 2, 3]