返回函数内部的函数如何工作

时间:2018-08-26 18:47:29

标签: javascript class return

我觉得我的例子很好地说明了这一点。我不确定函数在函数内部返回的方式。我觉得解决以下演示将有助于我理解。任何其他链接或文档也很容易阅读。

function LogFunction() {
  return function() {
    return "just console log this";
  };
}

console.log(LogFunction());
// "just console log this"   <<< I want this
// "[Function]"              <<< I am getting this

4 个答案:

答案 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())