在定义它的函数调用之外调用函数

calling a function outside of the function call in which it was defined

我正在尝试记录 myNewFunction(),结果显示未定义。

function outer() {
  let counter = 0;

  function incrementCounter() {
    counter++
  }
  return incrementCounter;
}

const myNewFunction = outer();

console.log(myNewFunction())
console.log(myNewFunction())
console.log(myNewFunction())

正如我在 运行 之后能够得到的那样,您的代码表明您想要调用我的 myNewfunction 的函数未在该块中定义。 必须先介绍,再使用。

{ "message": "ReferenceError: myNewFunction 未定义", “文件名”:“https://stacksnippets.net/js”, “线”:21, “科尔诺”:1 }

传递值时不需要实际调用函数。如果你想获得反价值。应该return吧。在您的示例中代替 returning incrementCounter() 函数。我还建议与全球背道而驰。避免每次调用 myNewFunction() 时都重置计数器。

let counter = 0;

function outer() {
  function incrementCounter() {
    counter++
  }
  incrementCounter();
  return counter;
}

const myNewFunction = outer;

console.log(myNewFunction())
console.log(myNewFunction())
console.log(myNewFunction())

I am trying to log myNewFunction(),and the results shows undefined.

因为 myNewFunction,与 incrementCounter 相同,return 什么都没有:

  function incrementCounter() {
    counter++
    // no return statement here
  }

如果没有明确的return语句,函数returns undefined。如果你想让它 return counter 的新值,那么就这样做。

function outer() {
  let counter = 0;

  function incrementCounter() {
    counter++;
    return counter;
  }
  return incrementCounter;
}

const myNewFunction = outer();

console.log(myNewFunction())
console.log(myNewFunction())
console.log(myNewFunction())