Node.js中的模块范围

时间:2015-03-10 16:58:32

标签: javascript node.js module

我很难弄清楚以下模块作用域在node.js中是如何工作的。

main.js

module.exports = App = {
  add: function(a, b) {
    return a + b;
  }
}

var getNumber = require('./module');
var result = App.add(100, getNumber());

module.js

var number = 200;

module.exports = function () {
  console.log(App); // App is visible here - how come?
  return number;
};

我想知道为什么App在模块中可见,因为它不是必需的。如果我不再导出App,它就不可见了。

2 个答案:

答案 0 :(得分:4)

由于您没有声明var AppApp隐式地成为全局变量。即使您根本没有module.exports,也会发生这种情况。

答案 1 :(得分:1)

App在全球范围内:



foo = {}

foo.bar = baz = 5

console.log(baz)

// baz is available on the global scope