函数中的这些节点jsvariables是什么?

我正在用NodeJS,Express和PassportJS创build一个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); }); 

我的问题是:

为什么在validationfunction之后(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 

()调用函数。 它里面的variables作为parameter passing给它。 你可以看到他们进入你的代码行的包含function。