将参数传递到 Javascript 中的揭示模块模式

Passing arguments into the revealing Module pattern in Javascript

在 JavaScript 中实现 Revealing 模块模式时如何将参数传递给函数。我有一个这样的模块

var GlobalModule = (function() {
    function consoleLog(textToOutput) {
        console.log(textToOutput);
    }

    return {
        consoleLog: consoleLog()
    };
})();

稍后,当我 运行 GlobalModule.consoleLog("Dummy text"); 时,我得到 undefined 作为输出。

在 return 对象中使用函数

var GlobalModule = (function() {
  return {
    consoleLog: function(textToOutput)
    {
     console.log(textToOutput);
    }
  }
})();

GlobalModule.consoleLog("Dummy text");

只需像这样实现相同的输出。 object => function call。不需要 return 对象

 var GlobalModule ={
        consoleLog: function(textToOutput) {
                                    console.log(textToOutput);
                                  }
      }

    GlobalModule.consoleLog("Dummy text");

换行

consoleLog: consoleLog()

consoleLog: consoleLog

甚至(es6)到:

consoleLog
return {
    consoleLog: consoleLog()
};

你的那部分代码是错误的。 由于函数末尾的 (),您正在导出 consoleLog 调用的结果,您希望在其中导出函数本身。 所以只需删除函数调用:

return {
    consoleLog: consoleLog
};

你可以这样做

var GlobalModule = (function() {
    function consoleLog(textToOutput) {
        console.log(textToOutput);
    }

    return {
        consoleLog: consoleLog // () is removed otherwise it will execute immediately
    };
})();

GlobalModule.consoleLog('Hello')

DEMO

你要传递一个全局变量,在IIFE的括号中传递它

var GlobalModule = (function(x) {
    function consoleLog(textToOutput) {
        console.log(textToOutput,x); // will log Hello temp
    }
   return {
        consoleLog: consoleLog
    };
})('temp');