首页 > 解决方案 > 返回函数使用闭包返回数组值

问题描述

我正在尝试在 JS 中使用 Closure 来声明一个名为的函数,该函数**expandArray()**包含一个名为**myArray**并返回一个匿名函数,该函数通过将值增加 1 而不是返回的函数然后返回的值来直接修改myArray**myArray**。我的问题是返回函数返回函数而不是数组值的最后一部分?!

这是我的代码

function expandArray() {
  const myArray = [1, 1, 1];

  return function () {
    myArray.forEach( function (num, index, myArray) {
        myArray[index] = num + 1;
    });
    return myArray;
  };
}

console.log(expandArray());

标签: javascriptecmascript-6

解决方案


作为它的闭包,你只调用了一次 like expandArray(),它返回函数本身,它在下面

ƒ () {
    myArray.map( function (num, index, myArray) {
        myArray[index] = num + 1;
    });
    return myArray;
  }

you need to invoke it again to get your result back如下

expandArray()() //[2, 2, 2]

参考:JavaScript 闭包是如何工作的?


推荐阅读