为什么一个模块的输出必须在文件底部声明?
我有以下编辑代码:
module.exports = { read: read, write: write, }; var read = function(parameters, config, next) { /* <snip> */ }; var write = function(parameters, config, next) { /* <snip> */ };
如果我去其他地方require()
这个文件,它会崩溃节点,并说所需的对象没有方法read
或write
。 将不会提升的function拉上modules.export = { ... };
?
这是您用来声明函数提升的函数的语法。 如果你这样宣布这些function,他们会在范围内被“吊起来”,一切都很好。
module.exports = { read: read, write: write, }; function read(parameters, config, next) { /* <snip> */ }; function write(parameters, config, next) { /* <snip> */ };
附注:像我的代码段中的命名函数,而不是匿名函数分配给像你的片段中的variables,更容易debugging和configuration文件,因为他们的名字被包含在堆栈跟踪。