我已经开始学习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的模块。有人能解释一下这种传递参数的方式是如何工作的,以及如何以不同的方式重写它吗?
发布于 2016-06-21 18:03:40
angular.module('common.ui')由app引用。见What is the (function() { } )() construct in JavaScript?。
你可以正常地声明它
(function() {
var app = angular.module('common.ui');
})();发布于 2016-06-21 17:57:51
如果没有最后的父类(传递angular.module),它将只是一个被定义的函数,但是没有做任何事情,并且没有名称就不能调用它。家长们立刻调用了它。
至于重写,可以用名称定义,然后调用。因为它只会被调用一次,没有必要给它命名。相反,它只是在运行。
使用IIFE还有其他原因(比如用于封装数据或绕过异步代码的闭包),但在这种情况下,它实际上只是避免了命名和调用。
发布于 2016-06-21 17:59:38
上面的函数不在作用域中,也没有被看到,除非存在这个()存在,因为它是为上一个函数定义参数并调用它。
https://stackoverflow.com/questions/37951286
复制相似问题