我正在使用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)?与范围有关吗?

最佳答案

似乎函数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

关于javascript - 函数的这些 Node js变量是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25698660/

10-16 14:32