将变量传递给IIFE,如NodeJS module.exports

时间:2015-06-25 09:41:18

标签: javascript node.js

我试图将变量传递给另一个文件中的IIFE(模块必需),但忽略了它。

index.js

var modulo = require('./modulo');
modulo.foo = "newFoo";
console.log(modulo.foo);
console.log(modulo.myFunction.innerFunction());

modulo.js

var foo = "oldFoo";
var myFunction = (function(innerFoo) {
  return {
    innerFunction: function () {
      return "Returning innerFunction with " + innerFoo;
    }
  };
})(foo);

module.exports.foo = foo;
module.exports.myFunction = myFunction;

现在当我执行node index.js时,结果是:

newFoo
Returning innerFunction with oldFoo

如何传递 newFoo 变量,以便 modulo.js 可以在内部使用它?

(实际上,我想传递套接字,以便我的 module.js 可以使用它与服务器进行通信)

非常感谢你!!

编辑:解决方案

modulo.js

module.exports.foo = "";
var myFunction = (function() {

  return {
    innerFunction: function () {
      var innerFoo = module.exports.foo;
      return "Returning innerFunction with " + innerFoo;
    }
  };
})();

module.exports.myFunction = myFunction;

1 个答案:

答案 0 :(得分:1)

您的IIFE从module.foo读取 ,您正在覆盖该foo,但是来自modulo.js中的实际{{1}}变量。 Javascript是带有原始值的Pass-by-value;)