Node.js - 与require相同的构造函数

时间:2015-04-21 21:17:58

标签: node.js constructor module

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

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

与此同时,这似乎产生了不同的结果:

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

我认为他们会做同样的事情,但我显然有些不对劲。

2 个答案:

答案 0 :(得分:0)

哦,男人 - 我用这个问题创下新低。感谢@Dave Network给我的提示。

我的constructor lib在完成后没有返回(module.exports)。修好后,结果也一样。

答案 1 :(得分:0)

这些意味着完全不同的事情,尽管有问题的模块可能以这样的方式编写,以至于它们碰巧做同样的事情。

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

这表示“调用函数require,并将其返回值赋给变量lib”。据推测,它正在返回一个函数,因为我们会立即调用该函数。

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

这表示“调用函数require,它返回一个函数,然后调用该函数,并将第二个函数的返回值赋给变量lib。”第二个函数可能返回任何东西,一个数字,一个字符串等。但不一定是函数(尽管它也可以返回它)。

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