Javascript 不知从哪里来的函数参数?
我刚刚开始使用NodeJS,我发现自己对如下代码感到困惑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 =
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
})