为什么express允许用一个被调用的函数来定义函数?通常,如果你定义一个函数或作为参数传递,你传递的是函数引用而不是调用。
当我第一次看到中间件示例时,我期望它是:
app.use(express.json);
app.use(express.urlencoded);
var myfunction = function() {};
app.use(myfunction);
但我看到的是
app.use(express.json());
app.use(express.urlencoded());
注意,参数大括号字符,()
这些被调用的函数是否返回一个函数?
仅供参考,VSCode没有遵循这些方法上的引用,所以我看不到它返回的内容。
更新:
我可以自己调用函数并检查结果是什么。brb... back my app is in the middle of work and not launchable.
3条答案
按热度按时间sxpgvts31#
您没有在这里“定义”任何东西--您调用的是
use
函数,该函数应该接收一个函数作为其参数。调用express.json()
或express.urlencoded()
将返回此类函数。bxfogqkk2#
当你调用函数
app.use()
并传递一个函数调用作为它的参数(express.json()
)时,被调用的函数返回一些东西,这个返回值在后台应用到参数。因此,当您调用app.use(express.json())时,实际上是在调用express.json(),它返回另一个函数(Express中间件)
2ul0zpep3#
如前所述,调用函数app.use()并传递一个函数调用作为其参数(express.json()),被调用的函数返回另一个函数。
我在我的应用程序中添加了一个对它的调用,我就能够步入该功能。
正如文档和代码所示,它是一个返回另一个函数的函数,在本例中,它是嵌入式的。
具体来说,这一行: