为什么我不能在a.js中看到b.js中定义的变量,尽管包括前者?

时间:2015-09-14 02:30:11

标签: javascript node.js scope var

这是b.js

var something = "hooorraaaaay!!!";

这是a.js

require( './b.js' );

console.log(something);

为什么something内无法识别a.js。我知道它已经用var声明,但我的理解是在函数外声明的任何变量都应该是全局的。那么为什么这不起作用呢?

1 个答案:

答案 0 :(得分:0)

我假设您正在使用node.js来判断require函数。

node.js将每个文件包装在自己的范围内。这与var关键字的使用无关。 node.js中的每个文件都称为模块。

现在假设您要包含一个模块,require,您已经正确使用了它。 但是因为你的模块没有输出任何东西,所以当它包含在其他模块中时它是无用的。

因此,在b.js文件的末尾添加以下行:

module.exports.something = something;

现在我们终于可以使用导出的变量:

var b = require('./b.js');
console.log('Something is : ' + b.something);