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