Javascript 不知从哪里来的函数参数?

Javascript 不知从哪里来的函数参数?,javascript,node.js,express,Javascript,Node.js,Express,我刚刚开始使用NodeJS,我发现自己对如下代码感到困惑 app.get('/home', function(req, res) { // req and res are objects }) 我经常看到这种类型的函数调用,其中匿名函数中的参数似乎不知从何而来,但其中包含各种属性和/或方法?您正在将一个函数传递给另一个函数,这 function(req, res) { } 是一个函数。假设您在被调用的方法中为其指定了一个局部变量名,如b,则可以调用该函数。例如,- app.get =

我刚刚开始使用NodeJS,我发现自己对如下代码感到困惑

app.get('/home', function(req, res) {
    // req and res are objects
})

我经常看到这种类型的函数调用,其中匿名函数中的参数似乎不知从何而来,但其中包含各种属性和/或方法?

您正在将一个函数传递给另一个函数,这

function(req, res) {
}
是一个函数。假设您在被调用的方法中为其指定了一个局部变量名,如
b
,则可以调用该函数。例如,-

app.get = function(a, b) { // <-- assign a function to app.get
  b("one", "two"); // <-- and then req would be one, and res would be two.
}
app.get=function(a,b){/这实际上是:

如您所见,
express()
this
,它被用作
createServer
的参数

您可以找到以下文件:

requestListener是一个自动添加到“请求”事件的函数

然后,当您检查
请求
事件时:

事件:“请求”

function (request, response) { }
每次有请求时发出。请注意,可能有多个请求 每个连接的请求数(在保持活动连接的情况下)。 请求是http.IncomingMessage的实例,响应是 http.ServerResponse的实例

从技术上讲,每次收到来自浏览器的新请求时都会发出此事件

这个密码呢

app.get('/home', function(req, res) {
    // req and res are objects
})
是此路由()请求的侦听器

因此
req
res
请求
响应
的缩写,是从
请求
事件传递的

然后express添加了更多的方法/属性,并找到了它们



如果要查看
.get()
的代码,请参阅。

.get
是一个具有两个参数的函数,一个路径和一个回调。回调可能在代码中运行,如下所示:
回调(请求、响应)
-因此,当你传入一个匿名方法时,你给它一个
req,res
参数。阅读API文档,看看回调采用什么参数。问题是,我没有在任何地方定义req和res对象,我只是传入它们,不知何故它们会变成带有methods的对象。函数是一类数据类型。它基本上是一个带有特殊能力。因此,您将该函数对象传递给
get
方法的内部,当时间到来时,它将调用该函数。它具有
req
res
对象,并将它们传递给您的函数。如果您不理解回调,您将永远不会在任何地方定义它们,
express
定义如果您看到一个命名函数声明像
function handleTransaction(req,res){…}那样单独存在,则将它们传递到
.get
的回调中
,你不会觉得奇怪吧?你会认为它在代码中的其他地方被调用。嗯,就是这样;调用函数的代码只是在
app.get
中的某个地方。
app.get
选择调用函数的方式是提供特定的请求和响应对象作为函数的参数。
app.get('/home', function(req, res) {
    // req and res are objects
})