如何在函数内返回函数

问题描述 投票:0回答:5

我觉得我的例子很好地解释了这一点。我不确定函数内部返回的函数如何工作。我觉得解决下面的演示会帮助我理解。任何其他链接或文档也很容易阅读。

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

console.log(LogFunction());
// "just console log this"   <<< I want this
// "[Function]"              <<< I am getting this
javascript class return
5个回答
3
投票

您正在返回内部函数的引用,要执行它,您需要再次放置

()
以便执行函数引用。

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
投票

在 JavaScript 中,函数被称为“一流函数”,这意味着您可以像任何其他类型(例如对象/数字)一样返回/传递函数。您可以在这里找到更多相关信息

您可以将其分解为变量以使其更清晰,例如:

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()() );

0
投票
console.log((LogFunction())());

LogFunction
返回一个函数。所以
LogFubction()
一个函数。你就叫它吧


0
投票

您的函数 LogFunction 返回一个内部函数,您还需要调用该函数才能获得最终结果。

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

console.log(LogFunction()());

您可以使用更少的代码:

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

console.log(LogFunction())


0
投票

这是我在进行 leet 代码挑战时发现的解决方案。

let logFunction =  function() {
return function(...args){
    return logFunction;
};

};

© www.soinside.com 2019 - 2024. All rights reserved.