【问题标题】:What is the difference between assigning an IIFE's public members to a variable vs returning an object将 IIFE 的公共成员分配给变量与返回对象有什么区别
【发布时间】:2011-11-04 01:52:36
【问题描述】:

我最近一直在查看大量 JavaScript 代码,并且看到了两种不同的方式来使用分配 IIFE 的“公共”属性。

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

var public1;

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

    public1= {
        getFoo: function(){
            return foo;
        }
    };
}());

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

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

    return {
        getBar: function(){
            return bar2;
        }
    };
}());

这两种方式有根本区别还是只是偏好问题?我还创建了一个小提琴,因此您可以根据需要运行或更新代码:http://jsfiddle.net/bittersweetryan/gnh79/3/

【问题讨论】:

  • IIFE = 立即调用函数表达式,我假设。老实说,我从来没有听说过这个术语或缩写(这并不意味着什么)。虽然我认为 立即自调用函数 更常见。
  • @Felix: Here's an article 讨论 IIFE,以及名称的原因。 “如果您喜欢首字母缩略词,我建议使用术语“立即调用函数表达式”和“IIFE”......因为它不是在执行自身的函数,即使正在执行该函数”
  • @patrick:谢谢,非常感谢!我想我只是不喜欢缩写词;):D

标签: javascript iife


【解决方案1】:

没有区别。

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

【讨论】:

  • 对于第一种情况,我能看到的唯一充分理由是在其范围顶部声明变量的约定。在第二种情况下,IIFE 明确地与相关变量相关联,因此发生的事情更加明显,这是一个更重要的标准恕我直言。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多