最近我在学习JavaScript中的IIFE和模块时,想到一个问题:如果立即调用函数表达式(IIFE)并不使其成为模块,那么它是如何创建模块的呢?
有人能分享一下以下代码的区别吗:
var MODULE = (function () {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function () {
// ...
};
return my;
}());
并且这段代码中该函数没有立即调用...
var MODULE = function () {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function () {
// ...
};
return my;
};
第二个代码块的意思是,模块只是一个返回对象的函数。如果我这样使用第二个变量:
var ModuleObj = Module();
这个代码块是否与我之前分享的第一个IIFE代码块相同?有点困惑...