我觉得我的例子很好地说明了这一点。我不确定函数在函数内部返回的方式。我觉得解决以下演示将有助于我理解。任何其他链接或文档也很容易阅读。
function LogFunction() {
return function() {
return "just console log this";
};
}
console.log(LogFunction());
// "just console log this" <<< I want this
// "[Function]" <<< I am getting this
答案 0 :(得分:2)
您要返回内部函数的引用,要执行它,您需要再次放置()
以便执行该函数引用。
function LogFunction() {
return function() {
return "just console log this";
};
}
console.log(LogFunction()());
//You can also get the function reference in a variable, and execute it:
const innerFunction = LogFunction();
//assigning the returned function reference.
console.log(innerFunction());
//executes the returned reference
答案 1 :(得分:1)
在JavaScript中,函数被称为“一流函数”,这意味着您可以像其他类型(对象/数字)一样返回/传递函数。您可以找到more about this here。
您可以将此变量分解为变量,以使其更加清晰,例如:
function LogFunction() {
return function() {
return "just console log this";
};
}
var a = LogFunction()
console.log( a() );
但是,正如其他人正确指出的那样,您可以直接致电
console.log( LogFunction()() );
在变量示例中,当用LogFunction()
调用()
时,您正在调用该函数,并且调用的结果被分配给变量a
该函数是另一个函数,您需要调用前一个函数的结果才能访问此函数a()
的结果。
您可以根据需要具有任意级别的嵌套函数,而对于新的ES2016,您可以利用箭头函数使此代码更加清晰。
const LogFunction = () => () => "just console log this";
console.log( LogFunction()() );
答案 2 :(得分:0)
console.log((LogFunction())());
LogFunction
返回一个函数。因此LogFubction()
是一个函数。你就叫它
答案 3 :(得分:0)
您的函数LogFunction返回一个内部函数,您还需要调用该内部函数以获得最终结果。
function LogFunction() {
return function() {
return "just console log this";
};
}
console.log(LogFunction()());
您可以使用更少的代码:
function LogFunction() {
return "just console log this";
}
console.log(LogFunction())