他们之间没有什么区别。两个代码的工作方式相同。但是,如果您使用第一个代码并且当您缩小代码时,那么它会造成混乱。
找个例子:
.controller('MyController', function(a){...});//$scope is changed to a
并且您的代码将无法工作,因为 angularjs 代码使用 $scope 变量,因为它不接受第一个、第二个、第三个等等参数。
因此,第二个代码比第一个更安全,就好像当您缩小代码时,它仍然采用相同的变量,即 $scope。
找个例子:
.controller('MyController', ['$scope', function(a){...})];//a refers to $scope
因此,当您缩小代码时,上面的代码可以正常工作,因为 $scope 被注入代替 a。因此,如果您传递多个参数,则在此示例中排序很重要。请看以下内容:
.controller('MyController', ['$scope','$timeout', function(s,t){...})];
s 作为 $scope 注入,t 作为 $timeout 注入。所以如果你改变它们的顺序['$timeout','$scope', function(s,t){...})]
那么 s 是 $timeout,t 是 $scope。因此,在此示例中排序很重要,但在第一个示例代码中排序并不重要,因为名称很重要,例如 $scope、$timeout。
如果您使用第一个示例代码,还有另一种注入变量的方法,如下所示:
MyController.$inject = ['$scope'];
对于多个参数,
MyController.$inject = ['$scope','$timeout'];
那么,主要有以下三种注解:
- 隐式注释 - 您的第一个示例代码
- $inject 属性注释 - $inject 方法
- 内联数组注释 - 您的第二个示例代码