两个闭包之间有什么区别?

时间:2015-02-23 19:45:37

标签: javascript angularjs closures

我正在使用我的js文件,如:

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

但是我看到当我使用闭包时,有些人将角形物体本身注入闭合物。类似的东西:

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

哪一种更好用或两种用法之间有什么区别?

所以我不会一直添加全局角度变量,不会造成任何麻烦?

1 个答案:

答案 0 :(得分:1)

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