将IIFE的公共成员分配给变量与返回对象之间有什么区别

bit*_*yan 3 javascript iife

我最近一直在研究很多JavaScript代码,并且我已经看到了使用IIFE的"公共"属性的两种不同方式.

第一个是创建变量并将该变量分配给IIFE内部的属性,如下所示:

var public1;

(function(){
    var foo= "Foo", bar= "Bar";

    public1= {
        getFoo: function(){
            return foo;
        }
    };
}());
Run Code Online (Sandbox Code Playgroud)

我看到的第二种方式是从IIFE返回一个对象,如下所示:

var public2 = (function(){
    var foo2= "Foo2", bar2= "Bar2";

    return {
        getBar: function(){
            return bar2;
        }
    };
}());
Run Code Online (Sandbox Code Playgroud)

这两种方式之间是否存在根本区别,还是只是偏好?我还创建了一个小提琴,以便您可以运行或更新代码:http://jsfiddle.net/bittersweetryan/gnh79/3/

Fel*_*ing 6

没有区别.

但我认为第二个更容易维护.在第一个示例中更改变量名称时,您还必须在函数中更改它.

  • 我可以看到第一个案例的唯一理由是在其范围的顶部声明变量的约定.在第二种情况下,IIFE明确地与相关变量相关联,这是更明显的正在发生的事情,这是一个更重要的标准恕我直言.:-) (2认同)