Return 在揭示模块模式中

Return in Revealing Module Pattern

我在此处阅读了 Addy 关于揭示模块模式的书。但是,如果您执行示例代码,它实际上 return 未定义。解决方法是在每个调用的函数之前添加 'return'。如果使用 RMP,我是否应该为每个被调用的函数添加 return?这是让它工作的正确方法吗?我错过了什么?

var myRevealingModule = (function () {

        var privateCounter = 0;

        function privateFunction() {
            privateCounter++;  <--need to add return
        }

        function publicFunction() {
            publicIncrement(); <-- need to add return
        }

        function publicIncrement() {
            privateFunction();  <--need to add return
        }

        function publicGetCount(){
          return privateCounter;
        }

        // Reveal public pointers to
        // private functions and properties

       return {
            start: publicFunction,
            increment: publicIncrement,
            count: publicGetCount
        };

    })();

myRevealingModule.start(); <-return undefined 

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript

这个问题与贼法牧无关,而是与函数和 return 值有关。

为什么您会期望一个 return 实际 return 除了未定义之外的任何东西的方法?

仔细看看这里。 start 实际上调用了 publicFunction 但后者的主体没有 return 任何东西。

然而你调用它并期待一个值。

你的问题的答案是:是的,如果你想从函数返回一个值,你必须 return 它。

在这个特殊的例子中,他们有一个方法 count 到 return 当前值。另外两个方法只是用来控制计数器。