这个函数的节点js变量是什么?

时间:2014-09-06 09:09:09

标签: javascript node.js passport.js

我正在使用NodeJS,Express和PassportJS创建API,但我认为这是一个JavaScript问题。

app.get('/test', function (req, res, next) {
    passport.authenticate('bearer', { session: false },

    function (err, user, info) {
        if (user === false) {
            res.send('ko');
        } else {
            res.send('ok');
        }
    })(req, res, next);
});

我的问题是:

为什么(req, res, next)在验证功能之后?它与范围有关吗?

2 个答案:

答案 0 :(得分:1)

似乎函数password.authenticate返回一个函数/闭包。代码就像

foo(x, y)(z);

即。调用foo(x, y)返回的函数使用参数z调用。

一个非常简单的例子是

function multiplier(k) {
    return function(x) { return x*k; };
}

console.log(multiplier(7)(6)); // outputs 42

答案 1 :(得分:0)

()调用该函数。其中的变量作为参数传递给它。您可以在代码的第一行看到它们进入包含函数。

相关问题