require
возвращает то, что когда-либо было определено в упаковке. В приведенных выше случаях они являются функциями, поэтому параметр второй фактически вызывает функцию. Если вы его сломаете, это будет выглядеть так:
var debugFunctionFactory = require('debug');
var debug = debugFunctionFactory('morgan');
debug('this is a test debug command');
Реализация очень проста, если рассматриваемый модуль возвращает функцию. И в случае отладки и принизить возвращает функцию, которая возвращает функцию:
// Module code:
module.export = function(customName) {
return function(message) {
console.log(customName + ': ' + message);
};
};
// Your code:
var foo = require('module'); // => function
var bar = foo('foobar'); // => function
bar('baz'); // "foobar: baz"
// More concisely:
var foo = require('module')('foobar'); // => function
foo('baz'); // "foobar: baz"
Обратите внимание, что 'требуют()' еще только принимающую один аргумент - '«debug'' и '» depd'', соответственно. Возвращаемое значение немедленно вызывается с другой через вторую пару скобок - «morgan». –