我已经开始学习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的模块。有人可以解释一下这种传递参数的方式是如何工作的,以及如何以不同的方式重写它?
答案 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函数定义参数并调用它。