缩小这两段代码有什么区别?

What is the difference in minifying these two pieces of code?

我有以下控制器的非缩小版和缩小版代码:

非缩小版本代码:

phonecatApp.controller('PhoneListCtrl', function PhoneListCtrl($scope, $http) {
   //code for controller
});

缩小版本代码:

phonecatApp.controller('PhoneListCtrl', ['$scope', '$http',function PhoneListCtrl($scope, $http) {
    //code for controller
}]);

我不知道为什么首选缩小版本代码?缩小版和非缩小版代码有什么区别?

缩小重命名变量(除其他外)。您的第一个示例在缩小后将不再有效,因为 angular 在 $scope$http 重命名时不知道要注入什么。你的第二个例子,使用数组语法,告诉 angular 要注入什么而不考虑变量名。

(你的两个例子都有语法错误:PhoneListCtrl($scope, $http) 应该是 function PhoneListCtrl($scope, $http)。)

注意:当你像你一样使用命名函数时,还有另一个缩小安全的选项angular代码:

phonecatApp.controller('PhoneListCtrl', PhoneListCtrl);

PhoneListCtrl.$inject = ['$scope', '$http'];

function PhoneListCtrl($scope, $http) {
  //code for controller
}

最后,如果您真的更喜欢您的第一个示例,您可以使用 ng-annotate 预处理您的 angular 代码并使其缩小安全。