Javascript AngularJS-初始化控制器的正确语法是什么?

Javascript AngularJS-初始化控制器的正确语法是什么?,javascript,angularjs,syntax,Javascript,Angularjs,Syntax,我一直在关注一些关于AngularJS的教程,我注意到有多种方法可以初始化控制器 例如,以下代码基于AngularJS文档: angular.module('todoList', []) .controller('todoListCtrl', ['$scope', function ($scope) { ... } ]); 但是,此代码也适用于: angular.module('todoList', []) .controller('todoListCtrl',

我一直在关注一些关于AngularJS的教程,我注意到有多种方法可以初始化控制器

例如,以下代码基于AngularJS文档:

angular.module('todoList', [])
.controller('todoListCtrl', ['$scope',
    function ($scope) {
        ...
    }
]);
但是,此代码也适用于:

angular.module('todoList', [])
.controller('todoListCtrl',
    function ($scope) {
        ...
    }
);

一种方法优于另一种方法吗?

第二种语法不安全。缩小后,uglifier将重命名
$scope
,这意味着AngularJS注入器将无法正确注入它,因为注入器使用名称匹配来识别要解决的依赖性


第一个语法是为了解决这个问题而添加的,它是您应该用于生产应用程序的语法。

我从来没有听说过名称
uglifier
,这可能是我的一些ex'sClosure、Grunt/gulp包、RequireJS、Webpack的工具……它们都有一个“uglifier”来重命名代码库以压缩它。例如: