2016-06-21 37 views
1

我已经开始学习AngularJS并同时通过一些代码样本去我碰到下面传来:AngularJS和IIFE

(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的模块。有人能解释一下,这种传递参数的方式是如何工作的,以及如何以不同的方式重写这些参数?

+0

'angular.module( 'common.ui')'变成由'app'引用。请参阅http://stackoverflow.com/questions/8228281/what-is-the-function-construct-in-javascript。 – Jasen

回答

0

没有最后的parens(传递angular.module)它只是一个被定义的函数,但没有做任何事情,并且它不会被调用没有名字。 parens立即调用它。

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

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

0

上面的函数不在范围内或被看作是不可见的this()存在 您正在为上层函数定义参数并调用它。