使用IIFE定义扩展的正确方法

时间:2017-08-22 07:01:59

标签: javascript

我已经阅读了一些插件(jquerydropzone)并发现有一些不同的方式来声明扩展名。

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
})();

1 个答案:

答案 0 :(得分:2)

这只表明了Javascript的灵活性。您可以使用不同的技术实现相同的目标。有些人会告诉你这是一个很棒的语言功能,有些人会争辩。在一天结束时,所有提供的示例都是相同的。这只是你的品味,项目指导等问题,你会选择哪一个。

PS。宣布IIFE的另一种方式是:

!function() {

}()

:)