似乎如果你使用的是RequireJS并且你使用了define和require,那么也没有使用IIFE的意义,因为每个模块已经包含在define / require中.是这样的吗?
换句话说,这个代码
define(['app'], function(app)
{
app.run();
});
有任何区别/优势
(function() {
define(['app'], function(app)
{
app.run();
});
})();
解决方法:
无论如何,define()函数都在Global范围内,因此在IIFE中调用它根本没有任何区别,而且它有点多余.
如果将代码置于define回调之外,则会有所不同,但您不应该这样做,因为每个文件应代表一个封装模块.
我唯一能想到使用带有RequireJS的IIFE可能是在我通过在初始化之前调用require.config()来配置我的应用程序时;但即便如此,如果我只是调用require.config()并且外部没有任何代码,我仍然不会使用IIFE.
在这个例子中,没有必要使用IIFE:https://github.com/vasilionjea/bower-requirejs-starter/blob/master/local/js/main.js
我希望能回答你的问题.