javascript - 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 返回一个函数!!!” “尖叫调用返回函数!!!”
问题:为什么它会这样工作?执行的过程是什么?函数尖叫有任何参数吗?它是如何工作的?
这可能很容易,我搜索但没有明确的解释。有人可以给我一个提示或详细解释整个执行过程吗?
提前致谢!
解决方案
在 JavaScript 和其他函数式语言中,您会听到函数是“一等公民”这一术语,这意味着函数可以作为值传递或被其他函数引用。
这需要一些时间来理解是正常的,但是尝试一步一步地浏览你的代码,你会明白的:
- createScream 函数接受一个函数作为输入(记录器)
- createScream 函数然后返回另一个函数,该函数接受它自己的输入(消息)
- 返回的函数使用原始输入函数(记录器)以及第二个输入(消息)
并考虑使用中的执行顺序:
console.log
尖叫使用函数调用 createScream- 现在,当您使用消息调用尖叫时,该消息将首先根据 createScream 中的定义进行更改
- 然后一旦消息被更改,它就会被记录器函数调用
console.log
推荐阅读
- c++ - 从 std::enable_shared_from_this 继承
- javascript - 如何使用 JavaScript 在后台加载图表?
- javascript - Package.json 在打包分发中的作用
- android - Flutter build apk 有 bug 而 debug 很完美
- php - 从 php 生成的 ics 事件中的时间变化问题
- python - pygraphviz 的 conda-forge PackagesNotFoundError
- excel - 遍历行,将某些单元格中的值复制到另一个工作簿
- python - 使用boto3在python中获取http AWS服务器错误代码
- sas - SAS:使用宏运行 SQL 查询
- python - 脚本 Python 的预计时间(带进度条)