首页 > 解决方案 > javascript中其他函数返回的函数

问题描述

我是 Javascript 的新手,我陷入了“从其他函数返回的函数”中。代码如下。

var createScream = function(logger) { return function(message) {
            logger(message.toUpperCase() + "!!!")
        }
}

const scream = createScream(message => console.log(message))

scream('functions can be returned from other functions')
scream('createScream returns a function')
scream('scream invokes that returned function')

控制台输出:

“函数可以从其他函数返回!!!” “CREATESCREAM 返回一个函数!!!” “尖叫调用返回函数!!!”

问题:为什么它会这样工作?执行的过程是什么?函数尖叫有任何参数吗?它是如何工作的?

这可能很容易,我搜索但没有明确的解释。有人可以给我一个提示或详细解释整个执行过程吗?

提前致谢!

标签: javascriptfunctionreturnarguments

解决方案


在 JavaScript 和其他函数式语言中,您会听到函数是“一等公民”这一术语,这意味着函数可以作为值传递或被其他函数引用。

这需要一些时间来理解是正常的,但是尝试一步一步地浏览你的代码,你会明白的:

  • createScream 函数接受一个函数作为输入(记录器)
  • createScream 函数然后返回另一个函数,该函数接受它自己的输入(消息)
  • 返回的函数使用原始输入函数(记录器)以及第二个输入(消息)

并考虑使用中的执行顺序:

  • console.log尖叫使用函数调用 createScream
  • 现在,当您使用消息调用尖叫时,该消息将首先根据 createScream 中的定义进行更改
  • 然后一旦消息被更改,它就会被记录器函数调用console.log

推荐阅读