JavaScript:为啥我们在函数中使用 **arguments** 对象? [复制]
Posted
技术标签:
【中文标题】JavaScript:为啥我们在函数中使用 **arguments** 对象? [复制]【英文标题】:JavaScript: Why do we use **arguments** object in a function? [duplicate]JavaScript:为什么我们在函数中使用 **arguments** 对象? [复制] 【发布时间】:2015-03-19 13:52:32 【问题描述】:我注意到在某些函数中使用了 arguments 对象:
function fn(arg1, arg2)
console.log(arguments[0])
fn(1, 2); // 1
为什么有用?
【问题讨论】:
我们可以将它用于未知参数所以...arguments
对象有点特殊,但它最常用于可变数量的参数。还有一些有用的属性,例如 caller
和 callee
。更多信息:developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
【参考方案1】:
在您的示例中,它没有用,也不是一个好主意。当您想要一个可以接受不定数量参数的函数时,它会很有用:
function sum()
var total = 0;
for (var i = 0; i < arguments.length; i += 1)
total += arguments[i];
return total;
console.log(sum(5, 6, 7, 8)); // 26
请注意,ES6 允许使用rest parameters,这在现在使用arguments
的大多数情况下会更有用:
function sum(...values)
return values.reduce(function (prev, cur)
return prev + cur;
, 0);
【讨论】:
以上是关于JavaScript:为啥我们在函数中使用 **arguments** 对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用javascript函数包装器(在coffeescript中添加)“.call(this)”
为啥我们不应该在 javascript 中使用 ++? [复制]