在ES6中,可以使用...arguments
将一个函数的所有参数传递给另一个函数,例如。
function foo(a, b) {
return bar(...arguments);
}
function bar(a, b) {
return a + b;
}
foo(1, 2); // returns 3
我"发现"这个成语本身,我想知道它是否有任何缺点,或者它是否被认为是一种不好的做法?
答案 0 :(得分:4)
......我想知道它是否有任何缺点......
不是真的,除了几点要注意:
arguments
存在一些轻微的性能问题(在正常情况下无需担心)。arguments
,因此在箭头函数中不起作用;您将获得ReferencError(如果箭头函数位于顶层)或最近的包含arguments
函数(或方法)的function
(因为箭头关闭 arguments
[以及this
和super
]),这可能不是您想要的。您正在使用点差表示法,因此您也可以考虑使用其他表示法:
function foo(...args) {
return bar(...args);
}
function bar(a, b) {
return a + b;
}
console.log(foo(1, 2)); // returns 3
arguments
没有(次要)性能问题,在箭头函数中有效,并且清楚你的意思。
答案 1 :(得分:1)
arguments
变量包含传递给函数的所有参数。如果您有不同数量的参数并且您不知道有多少参数,则可以使用此选项。
从 ES6 开始,如果要将函数传递给各种参数,可以使用rest parameters。
function foo(...rest) {
return bar(...rest);
}
function bar(a, b) {
return a + b;
}
foo(1, 2);
答案 2 :(得分:1)
实际上没有任何缺点,你只需要确保如果你的参数是一个数组,它就是你正在调用的函数的参数的正确顺序。