Node.js - 构造函数与 require 在同一行

Node.js - constructor on same line as require

为什么这似乎有效(在构造函数的另一端接收变量):

var lib = require('lib');
lib('abc');

同时,这似乎会产生不同的结果:

var lib = require('lib')('abc');

我以为他们会做同样的事情,但我显然有问题。

哦,伙计 - 我对这个问题的回答再创新低了。感谢@Dave Network 向我举报。

我的 constructor for lib 在完成后没有自行返回 (module.exports)。解决这个问题后,结果还是一样。

它们的意思完全不同,尽管所讨论的模块的编写方式可能恰好是它们做同样的事情。

var lib = require('lib');
lib('abc');

这表示 "call the function require, and assign its return value to the variable lib"。据推测,它是 returning 一个函数,因为我们随后会立即调用该函数。

var lib = require('lib')('abc');

这表示 "call the function require, which returns a function, then call that function, and assign that second function's return value to the variable lib." 第二个函数可能 return 任何东西,数字,字符串等。但不一定是函数(尽管它也可能 return 那个)。

所以经过第一个选择,我们知道lib是一个函数。第二次选择后,我们没有。