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

JavaScript函数调用中的两组括号?,javascript,node.js,Javascript,Node.js,我正在读一本关于Node.js和Express的书,其中一个例子显示了一个带有两组括号的函数调用。我希望得到一个关于代码的解释,因为我以前没有见过这个。代码如下: app.use(require('cookie-parser')(credentials.cookieSecret)); 再一次,让我困惑的是第二组偏执狂,他们似乎在传递“credentials.cookieSecret”作为论点,但是传递给什么呢?这看起来像是一种生活,但我想不是 谢谢 如果函数返回另一个函数,就会发生这种情况 这

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

app.use(require('cookie-parser')(credentials.cookieSecret));
再一次,让我困惑的是第二组偏执狂,他们似乎在传递“credentials.cookieSecret”作为论点,但是传递给什么呢?这看起来像是一种生活,但我想不是


谢谢

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

这里有一个例子:

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);
require('cookie-parser')
也是一个函数。因此,可以使用
凭据再次调用它。cookiesSecret

这种用法对你来说可能很奇怪,但它是很自然的

请看下面的代码

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

adder(3)(4) == 7 
在下面的链接中,您可以检查
cookieParser
是否是一个返回另一个函数的函数。

cookie解析器
模块返回一个函数,该函数在您共享的代码中被调用

app.use(require('cookie-parser')(credentials.cookieSecret));
可以改写为:

var cookieParser = require('cookie-parser')

var cookieParserInstance = cookieParser(credentials.cookieSecret)

app.use(cookieParserInstance)

因为
require('cookie-parser')
返回一个
函数。完整的函数声明位于@haim770。非常感谢。谢谢你的帮助。