【问题标题】:calling a function outside of the function call in which it was defined在定义它的函数调用之外调用函数
【发布时间】:2021-08-28 16:27:52
【问题描述】:

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

function outer() {
  let counter = 0;

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

const myNewFunction = outer();

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

【问题讨论】:

  • 您正在调用myNewFunction(),但提供的代码中没有定义这样的东西。
  • 你需要var myNewFunction = outer();
  • 哎呀,谢谢你提到这一点。粘贴代码时出现了一些错误。下面的代码是我的完整代码。函数外部(){让计数器= 0;函数增量计数器(){计数器++}返回增量计数器; } 让 myNewFunction = external(); console.log(myNewFunction()) console.log(myNewFunction()) console.log(myNewFunction())
  • 我已经编辑了我的帖子,请看一下。
  • 为什么会显示其他内容? incrementCounter 只是增加 counter;它不返回任何东西。

标签: javascript closures


【解决方案1】:

正如我在运行您的代码后能够得到的那样,该代码显示了您想要调用 myNewfunction 的函数,该函数未在该块中定义。 你得先介绍它,然后使用它。

{ "message": "ReferenceError: myNewFunction 未定义", "文件名": "https://stacksn-ps.net/js", “亚麻”:21, “科尔诺”:1 }

【讨论】:

  • 能否再次运行代码sn-p。它返回未定义的输出。
  • 当我阅读这个问题时,我运行了这段代码,我得到了那个错误,现在我也得到了未定义的错误。
  • 是的!我希望你得到你的答案快乐编码。
【解决方案2】:

传递值时不需要实际调用函数。如果你想获得计数器值。应该退货。而不是在您的示例中返回 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())

【讨论】:

  • 通过不执行函数“outer()”,它返回了不是我想要的 incrementCounter 函数。我试图获取计数器变量的值。谢谢。
【解决方案3】:

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

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

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

如果没有显式返回语句,则函数返回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())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多