overview
Angular defines a concept of a so called digest cycle. This cycle can be considered as a loop, during which Angular checks if there are any changes to all the variables watched by all the $scopes. So if you have $scope.myVar defined in your controller and this variable was marked for being watched, then you are explicitly telling Angular to monitor the changes on myVar in each iteration of the loop.
Angular定一個了一個概念叫做digest cycle。可以把這個cycle想象成一個循環,在這個循環中Angular通過$scopes檢查觀察的變量是否發生改變。因此如果你在你的controller中定義$scope.myVar并且這個變量被標記為watched,然后你就顯式的告訴Angular在循環的每次迭代中觀測myVar的改變
reference
Dirty checking on angular
How do I use $scope.$watch and $scope.$apply in AngularJS?
AngularJS的數據雙向綁定是怎么實現的?