【问题标题】:What is the correct javascript IIFE template? [duplicate]什么是正确的 javascript IIFE 模板? [复制]
【发布时间】:2014-12-28 02:37:29
【问题描述】:

我一直在使用以下内容开始填写 IIFE 的代码:

(function() {
    /* code goes here */
}());

有时我看到使用以下内容:

(function() {
    /* code goes here */
})();

哪个是正确的?

【问题讨论】:

  • 两者都是正确的,无论你更喜欢什么。第二个更容易阅读。
  • 谢谢!如果它是一个答案,可以 +1-ed。

标签: javascript iife


【解决方案1】:

这纯粹是一种审美偏好。使用whatcha like。 Douglas Crockford 非常努力地推广第一个,但我更经常看到第二个。

【讨论】:

    【解决方案2】:

    根据 Douglas Crockford(jslint 的创建者)的说法,当其他开发人员阅读您的代码时,第一个更不容易出错。但并不是每个人都必须尊重这一点,两者都很好,尽管知道存在什么以及为什么存在是件好事。

    当一个函数被立即调用时,整个调用 表达式应该用括号括起来,以便清楚地表明 产生的价值是函数的结果,而不是 函数本身。

    var collection = (function () {
        var keys = [], values = [];
    
        return {
            get: function (key) {
                var at = keys.indexOf(key);
                if (at >= 0) {
                    return values[at];
                }
            },
            set: function (key, value) {
                var at = keys.indexOf(key);
                if (at < 0) {
                    at = keys.length;
                }
                keys[at] = key;
                values[at] = value;
            },
            remove: function (key) {
                var at = keys.indexOf(key);
                if (at >= 0) {
                    keys.splice(at, 1);
                    values.splice(at, 1);
                }
            }
        }; }());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 2023-03-04
      • 2014-08-05
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      相关资源
      最近更新 更多