返回揭示模块模式

Return in Revealing Module Pattern

本文关键字:模式 模块 返回      更新时间:2023-09-26

我在这里读了Addy关于揭示模块模式的书。但是,如果执行示例代码,它实际上返回undefined。一个解决方案是在每个被调用的函数之前添加"return"。如果使用RMP,我应该为每个被调用的函数添加返回吗?这是正确的方法吗?我错过了什么?

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

问题与RMP无关,而与函数和返回值有关。

为什么你期望一个不返回任何东西的方法实际返回的不是undefined?

仔细看看这里。start实际上调用了publicFunction,但后者的代码体没有返回任何东西。

但是你调用它并期望得到一个值。

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

在这个特殊的例子中,他们有一个方法count来返回电流值。另外两个方法仅用于控制计数器。