【AngularJS】DIとか配列アノテーションとか依存性注入とか$injectプロパティとか

参考
AngularJSの依存性注入を利用するには? - Build Insider

  .controller('MainCtrl', ['$scope', 'JsonData', function ($scope, JsonData) {
 .controller('MainCtrl', function ($scope,$cookies,$location,$rootScope,$sce) {
...

とコントロール名の後に[]が入る時と入らない時の違いってなんだろうと思って調べた結果、DI(Dependency Injection)コンテナーというものでした。
「依存性を注入する」

複数のオブジェクトを参照しない時は引数の名前でもってオブジェクトを引き渡せば良いが、基本は配列アノテーションを使った方が良いらしい。
また、$scopeをsとかにして簡略化して書くとデプロイ時に問題が起きるとか(そんな名前にするやついるのかよ)。

ちなみに、

<body ng-controller="MyController as my">
    <div>{{my.msg}}
</body>

angular.module('myApp', [])
    .controller('MyController', function() {
        this.msg = 'Hello, World';
});

ってやると、$scopeを使わなくてもオッケーみたい。