两个闭包有什么区别?

What is diffence between two closures?

我正在使用我的 js 文件:

(function() {
    'use strict';
    angular
    .module('app.someModule')
    .config(config);
    function config(someDependency){
    //some configuration
    }
    config.$inject=['someDependency'];
})();

但是我看到当我使用闭包时有些人将闭包注入 angular 对象本身。类似于:

(function(angular){/*whatever logic*/})(angular);

哪种用法更好或者两种用法有什么区别吗?

所以我没有像往常一样添加全局 angular 变量,这样不会造成任何麻烦?

两个立即执行的函数 (IIFE) 之间的区别在于,在第二种情况下,您使用一个参数 angular 调用函数。它可以提供的好处是性能略有提高,因为 Javascript 引擎不需要在全局范围内查找变量,因为 angular 对象在本地闭包范围内作为传递的引用可用函数调用(但当然它仍然指向在全局范围内定义的同一个 Angular 对象)。