我理解回调函数的本质是函数作为参数传递给另一个函数后再次执行。但是,我对回调函数中的变量来自何处感到困惑,如以下 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 的函数将被调用,当它调用时,它将接收到 req
和 res
。
假设 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/