2014-09-06 34 views
1

我正在用NodeJS,Express和PassportJS创建一个API,但我认为这是一个JavaScript问题。这些节点js变量在函数中是什么?

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)的身份验证功能之后?它与范围有关吗?

回答

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 
0

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