使用普通函数时,您可以使用参数隐式对象来查看给定的参数:
function myFunction() {
console.log(arguments);
}
myFunction('a', 'b');
// logs { 0: 'a', 1: 'b', length: 2 }
在箭头函数中,这将导致意想不到的结果:
function myFunction() {
const arrowF = () => console.log(arguments);
arrowF('c', 'd');
}
myRegularFunction('a', 'b');
// will log { 0: 'a', 1: 'b', length: 2 }
// insead of the expected { 0: 'c', 1: 'd', length: 2 }
这是因为箭头函数没有参数对象。他们也没有自己的 this 上下文,因此参数是来自 myRegularFunction 上下文的参数。
但是,我们可以使用 rest 参数在箭头函数中传播参数:
function myRegularFunction() {
const arrowF = (...args) => console.log(args);
arrowF('c', 'd');
}
myRegularFunction('a', 'b');
// logs ['c', 'd']
我们甚至可以制作一些很酷的东西,比如将常规参数与rest参数结合起来:
function multiplyTheSum(multiplier, ...numbers) {
console.log(multiplier); // 2
console.log(numbers); // [10, 20, 30]
const sum = numbers.reduce((s, n) => s + n);
return multiplier * sum;
}
multiplyTheSum(2, 10, 20, 30); // => 120
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。