如果我在一个模块中有这样的代码,
var foo = "bar";
module.exports = function() {
console.log(foo);
}
我从另一个人那里访问它,
var mod = require('above-module');
mod();
是否能够访问模块本地的变量'foo',或者在'require'缓存导出的函数后是否超出范围?
答案 0 :(得分:1)
是的,你可以这样做。通常这样的问题是不受欢迎的,因为通过尝试它们可以更快地回答它们。你也可以更快地得到答案
根据评论更新:
假设您有两个模块,模块A和模块B
模块A
var foo = "bar";
module.exports = function() {
console.log(foo);
}
模块B
var mod = require('A');
mod();
如果运行模块B," bar"将在控制台中登录。如果您尝试直接从另一个模块访问模块A的foo,则会出现错误,因为foo超出了范围。
如果您尝试从另一个模块中的模块A访问foo,则会出现错误
模块C
var mod = require('A');
console.log(foo); //error. undefined. foo is out of scope here
console.log(mod.foo); //also an undefined error
如果您需要在模块A外部访问foo,则需要将其导出。最简单的方法是将其作为属性添加到导出的函数
重新定义的模块A
var foo = "bar";
module.exports = function() {
console.log(foo);
}
module.exports.foo = foo;
然后你可以这样访问
模块访问foo
var mod = require('A');
var foo = mod.foo; //access foo in module A like so