Javascript 模块内函数的返回值

Javascript 模块内函数的返回值,javascript,node.js,module,Javascript,Node.js,Module,我创建了如下模块: module.exports = function() { function func1 () { } function func2 () { } return function() { func1(); func2(); return value; }; } 当我调用另一个文件中的模块时 myModule=require('myModule') 使用模块 myModule()我得到一个未定义的值。我错了什么?

我创建了如下模块:

module.exports = function() {

  function func1 () {

  }

  function func2 () {

  }

  return function() {

    func1();
    func2();

    return value;

  };
}
当我调用另一个文件中的模块时

myModule=require('myModule')

使用模块


myModule()
我得到一个未定义的值。我错了什么?

您正在导出一个函数,该函数在调用时返回另一个函数,该函数将抛出一个
ReferenceError
,表示
value
未定义,您可以通过定义
value
来缓解该问题

return function() {

    func1();
    func2();

    return 1; //for example

  };
为了运行它,您需要调用它两次

myModule()();
>> 1
我的猜测是,您只希望返回值,所以请将其包装在


如果希望
myModule()
返回一个值,则可以导出iLife:

module.exports = function () {

    function func1() {

    }

    function func2() {

    }

    return function () {
        func1();
        func2();
        return value;
    }();
}

当我运行该代码时,我得到:
func1(){SyntaxError:Unexpected token{
。尝试提供一个实际演示您的问题的标记。修复了打字错误。现在应该可以在编辑之后工作了,当我运行该代码时,我现在得到了
[Function]
(用
var myModule=require('./myModule.js');console.log(myModule());
)好的,这是我也知道的get@Mazzy这是正确的,并且是上面代码的预期输出。问题是什么?对这段代码所做的很好的注释,但不是真正的答案…我认为它回答了它-因为函数正在返回,所以需要调用它来获得返回值。
module.exports = function () {

    function func1() {

    }

    function func2() {

    }

    return function () {
        func1();
        func2();
        return value;
    }();
}