我已经阅读了一些插件(jquery
,dropzone
)并发现有一些不同的方式来声明扩展名。
jQuery
:
(function (global, factory) {
factory( global );
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
// jquery implementation
});
dropzone
:
(function () {
// dropzone implementation
}).call(this);
我的方式:
(function (global) {
var myExtension = function () {};
global.myExtension = myExtension;
}(window));
为什么javascript只使用一个IIFE
提供了多种方法来完成相同的工作?而且......哪个更好?
谢谢!
更新
异步功能:
(async () => {
// await something
})();
答案 0 :(得分:2)
这只表明了Javascript的灵活性。您可以使用不同的技术实现相同的目标。有些人会告诉你这是一个很棒的语言功能,有些人会争辩。在一天结束时,所有提供的示例都是相同的。这只是你的品味,项目指导等问题,你会选择哪一个。
PS。宣布IIFE的另一种方式是:
!function() {
}()
:)