做什么:
someFunction(args)(moreArgs);
用JavaScript做什么?
我有Passport.js documentation的以下工作代码:
app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
在这种情况下,使用args(字符串passport.authenticate
和函数)调用local
,然后(req, res, next)
存在。
换句话说:
someFunction(args)(moreArgs);
这不是IIFE - 正在运行的函数周围没有()
。它是什么?
答案 0 :(得分:4)
someFunction(args)
返回一个函数,因此(moreArgs)
只是调用返回的函数。
例如:
function foo(a) {
console.log(a);
function bar(b,c){
console.log(b, c);
}
return bar;
}
foo(20)("Thou shalt", "not steal");
答案 1 :(得分:1)
多数民众赞成currying。这只是一个返回函数的函数。
在js中可以使用箭头功能轻松编写:
const curry = arg1 => arg2 => console.log(arg1, arg2);
curry(1)(2)