我有一个随机数的数组。我想通过使用外部函数调用内部函数来添加这些数字的总和。基本上,使用闭包。



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/

10-09 15:39