从模块内的函数返回值

时间:2015-06-09 10:36:01

标签: javascript node.js module

我创建了一个如下模块:

module.exports = function() {

  function func1 () {

  }

  function func2 () {

  }

  return function() {

    func1();
    func2();

    return value;

  };
}

当我在另一个文件中调用模块时

myModule = require('myModule')

使用模块

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

2 个答案:

答案 0 :(得分:2)

您正在导出一个函数,该函数在被调用时返回另一个函数,而该函数反过来会抛出ReferenceError,表示value未定义,您可以通过定义value来缓解这个函数。

return function() {

    func1();
    func2();

    return 1; //for example

  };

要运行它,您需要调用它两次。

myModule()();
>> 1

我的猜测是你只想要返回的值,所以将它包装在IIFE

module.exports = function () {
    return (function() {
        func1();
        func2();

        return 1; //for example
    })();
}

答案 1 :(得分:1)

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

module.exports = function () {

    function func1() {

    }

    function func2() {

    }

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