Javascript 从具有module.exports但不返回的函数中获取变量
我有点迷路了: 我试图在另一个函数中使用一个变量,因为我已经需要其他函数的返回。我想我可以让变量global可用,然后将它导入FileB,有什么不对的吗?有没有更好的方法?非常感谢 文件A:Javascript 从具有module.exports但不返回的函数中获取变量,javascript,Javascript,我有点迷路了: 我试图在另一个函数中使用一个变量,因为我已经需要其他函数的返回。我想我可以让变量global可用,然后将它导入FileB,有什么不对的吗?有没有更好的方法?非常感谢 文件A: const variableToPass = null; module.exports = (env) => { variableToPass = env; const varA = require(`./FileB.js`); const varB = doThis(v
const variableToPass = null;
module.exports = (env) => {
variableToPass = env;
const varA = require(`./FileB.js`);
const varB = doThis(varA, …doSomething());
return varB;
};
module.exports = variableToPass;
文件B:
const variableToPass = require(‚./.FileA‘);
console.log(variableToPass);
它会记录:
{[Function]variableToPass:null}
您在这里遇到了几个问题
const env
定义了一个常量,因此您无法更改它(env)=>{
使用同名的局部变量屏蔽它,因此您甚至不尝试更改它module.exports.env=env;
复制计算语句时env
的值,因此即使更改了env
,也不会更改导出属性的值// called.js
var env = null;
function stuff() {
env = 1;
return 2;
}
function get_side_effect() {
return env;
}
module.exports = {
stuff: stuff,
get_side_effect: get_side_effect
};
// caller.js
const caller = require("caller");
var stuff = called.stuff();
var side_effect = called.get_side_effect();
console.log(stuff, side_effect);
或者从函数返回合理的数据结构:
// called.js
var env = null;
function stuff() {
env = 1;
return {
value: 2,
env: env
};
}
module.exports = {
stuff: stuff
};
// caller.js
const called = require("called");
var stuff = called.stuff();
console.log(stuff.value, stuff.env);
即使这不是最佳实践,您也可以尝试使用getter和setter函数导出整个类
setEnv(){
env = val;
}
getEnv(val){
return env;
}
在文件B中:
console.log(fileA.getEnv);
Globals是邪恶的。如果可以的话,请不要使用Globals。是的,这就是我的想法:-)但我不知道如何通过模块内部的require或类似方式将var传递到文件中。在env函数中导出您的导入现在是一个具有
env
属性的函数,因此它看起来可以工作,尽管我不确定您是否想要附加属性是的,该属性是我在函数中使用的param,但我想使该属性也在fileB中可用,这是我在函数中需要的属性,所以为什么不执行module.exports={env:env,func:}