我有以下编辑代码:
module.exports = {
read: read,
write: write,
};
var read = function(parameters, config, next) {
/* <snip> */
};
var write = function(parameters, config, next) {
/* <snip> */
};
如果我在其他地方转到require()
此文件,它将崩溃节点并说所需对象没有方法read
或write
。变量提升不会拉动modules.export = { ... };
以上的函数吗?
答案 0 :(得分:15)
这是用于声明由function hoisting引起的重要函数的语法。如果你声明这样的函数,它们将在范围内“悬挂”,一切都很好。
module.exports = {
read: read,
write: write,
};
function read(parameters, config, next) {
/* <snip> */
};
function write(parameters, config, next) {
/* <snip> */
};
附注:我的代码段中的命名函数与分配给代码中的变量的匿名函数相反,更容易调试和分析,因为它们的名称包含在堆栈跟踪中。