我了解回调函数的本质,因为该函数在作为参数传递给另一个函数后会再次执行。但是,我对回调函数内部的变量来自何处感到困惑,如以下node.js示例所示:
router.get('/', function(req, res){ res.render('index', {}); });
变量req和res如何填充?我们将不胜感激一个示例,该示例解释了如何仅调用res.render(…)而无需自己声明res。
它们来自在调用时调用普通非回调函数时来自的位置。
如果您有此功能,
function add (a, b) { return a + b }
您知道在调用add时a和b来自于,
add(1,2)
这与回调的原理相同,不要仅仅因为稍后会调用它而让您的大脑陷入混乱。
在某个时候,您传递给router.get的函数将被调用,当它执行时,它将接收req和res。
req
res
让我们假装router.get的定义如下
router.get = function(endpoint, cb){ //do something var request = {} var response = {} cb(request, response) // invocation time }
以您的示例为例,只要.get调用,就由节点来传递函数请求和响应。
.get