2016-01-10 4 views
3

Я читаю книгу на Node.js и Express в одном из примеров показывает вызов функции с двумя наборами круглых скобок. Я надеялся, что объясню, что делает код, так как я этого раньше не видел. Вот код:Два набора круглых скобок в вызове функции JavaScript?

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

Опять же, часть, которая меня смущает это второй набор parans, который, кажется, проходит «credentials.cookieSecret» в качестве аргумента, но к чему? Он похож на IIFE, но я не так.

Спасибо.

+3

Поскольку 'требуют ('куки-анализатор')' возвращает 'function'. Объявление полной функции приведено на странице https://github.com/expressjs/cookie-parser#cookieparsersecret-options – haim770

+0

@ haim770. Спасибо. Цените помощь. –

ответ

2

cookie-parser модуль возвращает функцию, которая вызывается в коде, который вы использовали.

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

можно переписать в виде:

var cookieParser = require('cookie-parser') 

var cookieParserInstance = cookieParser(credentials.cookieSecret) 

app.use(cookieParserInstance) 
1

Бывает, если функция возвращает другую функцию.

Вот пример:

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); 
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

Смежные вопросы