我试图通过在线教程解决问题。考虑以下功能:
var badFunction = function() {
return function() {
return "veryBad"
}
}
此处,badFunction
返回一个返回"veryBad"
的函数。我想将"veryBad"
存储在theBad
中。如何调用返回的内部函数?这个答案是不可接受的:
var theBad = "veryBad!";
这两个都不是:
var theBad = badFunction();
theBad();
虽然这些都有效。那么如何调用内部函数呢?
答案 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
中。这正是你在上次尝试中所做的。问题是您必须使用返回值执行某些操作,例如将其存储在变量中以供日后使用。