javascript - javascript回调函数中的参数从哪里来?

标签 javascript node.js

我理解回调函数的本质是函数作为参数传递给另一个函数后再次执行。但是,我对回调函数中的变量来自何处感到困惑,如以下 node.js 示例所示:

router.get('/', function(req, res){
    res.render('index', {});
});

如何填充变量 req 和 res?一个例子解释了我如何在不声明 res 的情况下调用 res.render(...) 将不胜感激。

最佳答案

在调用时,它们来自与调用普通非回调函数时相同的地方。

如果你有这个功能,

function add (a, b) {
  return a + b
}

当你调用 add 时,你知道 a 和 b 来自,

add(1,2)

这与回调的原理相同,不要让你的大脑因为稍后被调用而变得扭曲。

在某个时刻,您传递给 router.get 的函数将被调用,当它调用时,它将接收到 reqres

假设 router.get 的定义是这样的

router.get = function(endpoint, cb){
   //do something
   var request = {}
   var response = {}
   cb(request, response) // invocation time
}

在您的示例中,每当调用 .get 时, Node 都会传递您的函数请求和响应。

关于javascript - javascript回调函数中的参数从哪里来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34624634/

相关文章:

javascript - 禁用图例单击 NVD3 多图

javascript - Puppeteer - waitForResponse() 超时,但 page.on ('response' ) 找到响应

javascript - 按时间旋转 body 的背景图像

javascript - Js窗口根据另一个元素宽度调整改变元素宽度

javascript - Soundcloud 自定义播放器 - "id property is null"错误

javascript - 在本地 Linux 机器上部署 spine.js 应用程序

node.js - Nodejitsu上的Socket Hang Up,什么意思?

node.js - JWT 存储在哪里

node.js - 如何获取特定人员发送的电子邮件列表?

node.js - 我正在尝试将 Node 服务器部署到 heroku,但出现此错误 : throw er;//Unhandled 'error' event