来自示例here:
app.get('/account', ensureAuthenticated, function(req, res){
res.render('account', { user: req.user });
});
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login')
}
我不明白ensureAuthenticated
是如何运作的。它需要3个参数,没有设置默认参数。但如果我在没有参数的情况下调用它(在app.get
中),它确实正确执行,那怎么可能呢?
答案 0 :(得分:2)
您实际上并未在代码中的任何位置调用ensureAuthenticated
;你是将一个引用传递给该函数,并且你的http框架稍后调用函数(当向/account
发出请求时)传递正确的参数。
如果您已经写了ensureAuthenticated()
(带括号),那么您将在没有参数的情况下调用它。如果没有括号,则传递对函数的引用。
答案 1 :(得分:0)
Javascript参数值始终是可选的。
任何尚未传递的命名参数都只是undefined
。