someFunction(args)是什么(moreArgs);用JavaScript做什么?

时间:2017-11-24 15:43:04

标签: javascript

做什么:

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 - 正在运行的函数周围没有()。它是什么?

2 个答案:

答案 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)