为什么在此函数定义中使用'window.angular'如此?

时间:2015-05-12 08:39:26

标签: javascript angularjs functional-programming

我正在尝试理解我需要用来与Django集成的angularjs文件,它有一个我不熟悉的奇怪语法(请记住我是一个初级开发者,所以这可能是你的面包和黄油... ...

它类似于:

(function(angular, undefined){
    'use script';
    var djng_forms_module = angular.module('ng.django.forms', []);
    funtion hasCode(s){
        return .....
    }
    var foo = .....
}(window.angular));

我看过this关于窗口的javascript概念,它显示window部分是浏览器在加载页面时创建的顶级(?)级别对象。

运行console.log(window.angular)打印出一堆内部角度内容。所以我猜这是AngularJS的内部胆量......?

但为什么这种奇怪的封装作为一种功能(与JavaScript有关的是'功能'语言)?

完整的脚本是here,我无法弄清楚为什么它在这个函数定义中使用window.angular(而不是正常的做事方式)。看起来这个设置意味着当我通过script标签导入它时,它不能用于我的应用程序。

1 个答案:

答案 0 :(得分:8)

window.angular是全局angularjs变量,一旦angularjs从脚本标记中完全加载,就会创建该变量。您粘贴的代码片段确保在此变量的填充之后执行它。它可能以冗长的方式编写的一个原因就是其自动生成的性质。在更广泛的上下文中,它可能暗示脚本执行的顺序或使用angularjs库的不同版本。