0

这里的例子:

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 个参数,没有设置默认参数。但是,如果我不带参数(in app.get)调用它,它确实会正确执行,这怎么可能?

4

2 回答 2

2

您实际上并没有ensureAuthenticated在代码中的任何地方调用;您正在传递对该函数的引用,并且您的 http 框架稍后(当向 发出请求时/account)调用该函数并传递正确的参数。

如果您已经编写ensureAuthenticated()(带括号),那么您将在没有参数的情况下调用它。没有括号,您将传递对函数的引用。

于 2013-08-08T00:27:16.963 回答
0

Javascript 参数值始终是可选的。

任何尚未传递的命名参数都是简单的undefined

于 2013-08-08T00:25:02.853 回答