This question already has answers here:
Different ways to execute IIFE?
                                
                                    (2个答案)
                                
                        
                                5年前关闭。
            
                    
我一直在使用以下内容来开始为IIFE填写代码:

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


有时我会看到以下用法:

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


哪个是正确的?

最佳答案

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

关于javascript - 什么是正确的JavaScript IIFE模板? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26680361/

10-12 17:58