为什么 'window.angular' 在这个函数定义中这样使用?

Why is 'window.angular' used like so, in this function definition?

我正在尝试理解我需要用来与 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 关于 window 的 javascript 概念,它表明 window 部分是浏览器的顶级 (?) 对象在加载页面时创建。

运行 console.log(window.angular) 打印出大量内部 angular 内容。所以我猜这是 AngularJS...?

的内在胆量

但为什么将这种奇怪的封装作为函数(与 JavaScript 作为一种 'functional' 语言有关)?

完整的脚本是 here,我不明白为什么它在此函数定义中使用 window.angular(与正常的处理方式相反)。似乎此设置意味着当我通过 script 标签导入它时它不适用于我的应用程序。

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