调用函数没有参数,也没有定义默认参数

时间:2013-08-08 00:23:18

标签: javascript node.js authentication passport.js

来自示例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中),它确实正确执行,那怎么可能呢?

2 个答案:

答案 0 :(得分:2)

您实际上并未在代码中的任何位置调用ensureAuthenticated;你是将一个引用传递给该函数,并且你的http框架稍后调用函数(当向/account发出请求时)传递正确的参数。

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

答案 1 :(得分:0)

Javascript参数值始终是可选的。

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