首页 > 解决方案 > 在定义它的函数调用之外调用函数

问题描述

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

function outer() {
  let counter = 0;

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

const myNewFunction = outer();

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

标签: javascriptclosures

解决方案


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

因为myNewFunction, 这与incrementCounter不返回任何内容相同:

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

如果没有明确的 return 语句,则函数返回undefined. 如果您希望它返回新值,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())


推荐阅读