首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS和IIFE

AngularJS和IIFE
EN

Stack Overflow用户
提问于 2016-06-21 17:51:44
回答 3查看 283关注 0票数 1

我已经开始学习AngularJS,在阅读一些代码示例时,我遇到了以下情况:

代码语言:javascript
复制
(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的模块。有人能解释一下这种传递参数的方式是如何工作的,以及如何以不同的方式重写它吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-21 18:03:40

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

你可以正常地声明它

代码语言:javascript
复制
(function() {
    var app = angular.module('common.ui');
})();
票数 1
EN

Stack Overflow用户

发布于 2016-06-21 17:57:51

如果没有最后的父类(传递angular.module),它将只是一个被定义的函数,但是没有做任何事情,并且没有名称就不能调用它。家长们立刻调用了它。

至于重写,可以用名称定义,然后调用。因为它只会被调用一次,没有必要给它命名。相反,它只是在运行。

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

票数 0
EN

Stack Overflow用户

发布于 2016-06-21 17:59:38

上面的函数不在作用域中,也没有被看到,除非存在这个()存在,因为它是为上一个函数定义参数并调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37951286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档