javascript - 使用 module.exports 从函数中获取变量但没有返回

标签 javascript

我有点迷茫:

我试图让一个变量在另一个函数中可用,因为我确实已经需要其他东西的返回。我以为我可以让变量全局可用并将其导入 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 }

最佳答案

这里有几个问题。

  1. const env 定义一个常量,所以你不能改变它
  2. (env) => { 用同名的局部变量屏蔽它,所以你甚至不会尝试更改它
  3. 无论如何你永远不会调用那个函数
  4. 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/

相关文章:

javascript - React w/Redux/React-Redux 和 Redux-Persist 仅将第一个更改持久保存到本地存储

javascript - 我如何知道何时在输入字段中输入了一个字符?

javascript - 无法读取未定义的属性 'login' - 测试 spy - Angular2+

javascript - 使用 firebase .on() 刷新页面后,仅从 firebase 获取最后的数据

php - 如何在 Jquery 中创建动态 id 选择器?

javascript - 如何在对象字符串中插入单个反斜杠?

javascript - Koa 将数据从服务器传递到客户端

javascript - Spring Boot 无法为对象返回 JSON,但不能为对象列表返回 JSON

javascript - AngularJS:更改指令属性

javascript - 在 Angular 2 的 Observable.prototype.subscribe 中完成回调