JavaScript函数调用中有两组括号?

时间:2016-01-10 15:58:53

标签: javascript node.js

我正在读一本关于Node.js和Express的书,其中一个例子显示了一个带有两组括号的函数调用。我希望能解释一下代码在做什么,因为我以前没见过这个。这是代码:

XsListGetter

同样,令我困惑的部分是第二组parans,似乎是将“credentials.cookieSecret”作为一个论点,但是对于什么?它看起来类似于IIFE,但我不是。

感谢。

3 个答案:

答案 0 :(得分:3)

cookie-parser模块返回一个函数,该函数将在您共享的代码中调用。

app.use(require('cookie-parser')(credentials.cookieSecret));

可以改写为:

var cookieParser = require('cookie-parser')

var cookieParserInstance = cookieParser(credentials.cookieSecret)

app.use(cookieParserInstance)

答案 1 :(得分:2)

如果函数返回另一个函数,则会发生这种情况。

这是一个例子:

var increment = function(base){
    return function(adding){
      return base + adding;
    };
}

var sum = increment(2)(3); // sum = 5

var setBase = increment(2); // setBase = function(adding){ return 2 + adding; }
var sum = setBase(3);

答案 2 :(得分:1)

require('cookie-parser')也是一个功能。因此,可以使用credentials.cookiesSecret再次调用它。

这种用法对你来说可能有点奇怪,但这很自然。

请查看以下代码

var adder = function(a) {
    return function(b) { return a + b; }
}

adder(3)(4) == 7 

在以下链接中,您可以检查cookieParser是否是返回其他功能的函数。 https://github.com/expressjs/cookie-parser/blob/master/index.js