[英]Can function in module.exports access global variable in module?
如果我在一个模块中有这样的代码,
var foo = "bar";
module.exports = function() {
console.log(foo);
}
我从另一个像这样访问它,
var mod = require('above-module');
mod();
它是否能够访问模块本地的变量'foo',或者在'require'缓存导出的函数后是否超出范围?
是的,你可以这样做。 通常这样的问题是不受欢迎的,因为通过尝试它们可以更快地回答它们。 你也可以更快地得到你的答案
根据评论更新:
假设您有两个模块,模块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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.