举个例子
$ cat main.js
App = {
version : 1.1
};
require('./mymod.js');
$ cat mymod.js
console.log(App.version);
$ node main.js
1.1
请注意我是如何在没有 var
的情况下在 main.js 中声明 App
的。这使我可以从 mymod.js
访问 App
,而无需调用 require
。如果我用 var
声明 App
,这将不起作用。
我想了解为什么会这样?这是 node.js 的预期行为还是错误?此行为是否符合 ECMAScript 或 CommonJS 标准?
这个技巧提供了一个强大的机制来规避 node.js 的 require
模块系统。在每个文件中定义您的对象并将它们添加到顶级 App
命名空间。您在其他文件中的代码将自动访问这些对象。我错过了什么吗?
最佳答案
如果你不使用 var 给一个变量赋值,它就自动成为一个全局变量。这就是 JavaScript 的工作方式。如果您将 'use strict';
(需要引号)放在 js 文件的顶部,则会变成错误。
关于node.js - 为什么无需在其他文件中使用 `var` 即可访问未声明为 `require` 的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17951685/