我试图每次调用函数时都不要重新初始化(希望在这里使用正确的单词)。因此,第一次调用它时,应该对其进行初始化,但是在初始化之后,它应该仅使用该引用。

这是我正在尝试使用的代码。

JSFiddle



console.clear();

function mainFunction(e) {
  var index = 0;

  function subFunction() {
    console.log(index++);
  }
  return subFunction();
}

window.addEventListener('click', mainFunction)





每次调用index时,mainFunction应该增加一。显而易见的解决方案是使index成为全局变量(或仅在mainFunction之外)。但是我需要index to stay in mainFunction`。

每次(使用相同的引用)如何调用index时,如何使mainFunction递增?

我尝试将mainFunction分配给变量,然后在事件监听器中调用该变量,

var test = mainFunction;
window.addEventListener('click', test)


但这没用。结果是相同的。

最佳答案

您应按以下步骤更正代码;

console.clear();

function mainFunction(e) {
  var index = 0;

  function subFunction() {
    console.log(index++);
  }
  return subFunction; // <<< don't invoke subfunction
}

window.addEventListener('click', mainFunction()) // <<< invoke mainfunction

08-08 04:26