如何调用另一个函数返回的内部函数?

use*_*682 4 javascript function

我正试图通过在线教程解决问题.考虑以下功能:

var badFunction = function() {
  return function() {
    return "veryBad"
  }
}
Run Code Online (Sandbox Code Playgroud)

在这里,badFunction返回一个返回的函数"veryBad".我想存放"veryBad"在里面theBad.如何调用返回的内部函数?这个答案是不可接受的:

var theBad = "veryBad!";
Run Code Online (Sandbox Code Playgroud)

这也不是:

var theBad = badFunction(); 
theBad();
Run Code Online (Sandbox Code Playgroud)

虽然这两个都有效.那么如何调用内部函数呢?

Li3*_*357 10

只需调用返回值:

var theBad = badFunction()();
Run Code Online (Sandbox Code Playgroud)

这将首先调用该函数badFunction,然后在函数完成后,它将调用返回的函数.评估看起来像这样:

badFunction()();
^^^^^^^^^^^^^
Step 1, calls badFunction
Run Code Online (Sandbox Code Playgroud)

然后,一旦badFunction被调用,它将返回一个匿名函数表达式:

(function() { // <-- This is the return value of badFunction
  return "veryBad"
})();
  ^^
  Step 2, call the returned function expression for "veryBad"
Run Code Online (Sandbox Code Playgroud)

当然,您可以将返回的函数存储在中间变量中,然后调用:

var veryBadFunc = badFunction();
var theBad = veryBadFunc();
Run Code Online (Sandbox Code Playgroud)

这将存储返回的函数veryBadFunc,您可以在以后调用并存储theBad.这正是你在上一次尝试中所做的.问题是您必须对返回值执行某些操作,例如将其存储在变量中以供以后使用.