我有一个随机数的数组。我想通过使用外部函数调用内部函数来添加这些数字的总和。基本上,使用闭包。
let arr = [93, 95, 88, 0, 55, 91];
let addMany = function(arr){
let addTwo = function (numbers) {
console.log('array', arr)
console.log('numbers', numbers)
return numbers.reduce((acc,cur) => acc+cur,0)
}
return addTwo(arr);
}
let sum = new addMany(arr);
console.log('final sum', sum)
let res = sum.addTwo();
console.log(res);
我也认为我多次传递数组“ arr”。我可能是错的。
我已经使用IIFE和模块化方法进行了尝试。那一个很好。我正在尝试以这种方式实现同样的目标。
最佳答案
使用return addTwo(arr)
,您已经可以直接返回结果。我假设您宁愿自己返回addTwo
并在arr
中使用addTwo
:
let addMany = function(arr){
let addTwo = function () {
console.log('array', arr)
return arr.reduce((acc,cur) => acc+cur,0)
};
return addTwo;
}
您将其称为:
const closured = addMany(1, 2, 3);
console.log(closured()); // call addTwo
在您的示例中,您将其称为
(new addMany(...)).addTwo()
...以实现该行为,请删除return
,因为构造函数不返回任何内容,将addTwo
作为方法分配给this
(这是返回的对象) :let addMany = function(arr){
this.addTwo = function () {
console.log('array', arr);
return arr.reduce((acc,cur) => acc+cur,0)
};
}
关于javascript - JavaScript闭包:通过调用内部函数来添加数组的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55079428/