我有点迷茫:
我试图让一个变量在另一个函数中可用,因为我确实已经需要其他东西的返回。我以为我可以让变量全局可用并将其导入 FileB,有什么问题吗,可能有更好的方法吗?非常感谢
文件A:
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);
关于javascript - 使用 module.exports 从函数中获取变量但没有返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48771651/