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

时间:2017-08-27 23:16:46

标签: javascript function

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

var badFunction = function() {
  return function() {
    return "veryBad"
  }
}

此处,badFunction返回一个返回"veryBad"的函数。我想将"veryBad"存储在theBad中。如何调用返回的内部函数?这个答案是不可接受的:

var theBad = "veryBad!";

这两个都不是:

var theBad = badFunction(); 
theBad();

虽然这些都有效。那么如何调用内部函数呢?

1 个答案:

答案 0 :(得分:10)

只需调用返回值:

var theBad = badFunction()();

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

badFunction()();
^^^^^^^^^^^^^
Step 1, calls badFunction

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

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

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

var veryBadFunc = badFunction();
var theBad = veryBadFunc();

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