我正在读一本关于Node.js和Express的书,其中一个例子显示了一个带有两组括号的函数调用。我希望能解释一下代码在做什么,因为我以前没见过这个。这是代码:
XsListGetter
同样,令我困惑的部分是第二组parans,似乎是将“credentials.cookieSecret”作为一个论点,但是对于什么?它看起来类似于IIFE,但我不是。
感谢。
答案 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