AngularJS和IIFE

时间:2016-06-21 17:51:45

标签: javascript angularjs

我已经开始学习AngularJS,在浏览一些代码示例时,我遇到了以下内容:

(function(app) { 
    'use strict';
    app.directive('sideBar', sideBar);
    function sideBar() { 
      return { 
         restrict: 'E', 
         replace: true, 
         templateUrl: '/scripts/spa/layout/mypage.html' 
         } 
     }
  })(angular.module('common.ui'));

上面的代码使用IIFE创建自定义指令。我对代码的最后一行非常困惑。它传递一个名为common.ui的模块。有人可以解释一下这种传递参数的方式是如何工作的,以及如何以不同的方式重写它?

3 个答案:

答案 0 :(得分:1)

angular.module('common.ui')app引用。请参阅What is the (function() { } )() construct in JavaScript?

你可以正常宣布

(function() {
    var app = angular.module('common.ui');
})();

答案 1 :(得分:0)

没有最终的parens(传递angular.module),它只是一个被定义但没有做任何事情的函数,如果没有名字就无法调用。 parens立即调用它。

就重写而言,可以使用名称定义然后调用。因为它只会被调用一次,所以不需要给它命名。相反它只是运行。

使用IIFE还有其他原因(比如封装数据或绕过异步代码),但在这种情况下,它实际上只是避免命名然后调用。

答案 2 :(得分:0)

上部函数不在范围内或者看到untile this()存在 您正在为upper函数定义参数并调用它。