Q:

Implicit creation of watches in AngularJS for all elements belonging to a $scope

Is it correct that AngularJS creates a watch for EVERY element that belongs to a $scope?
I'm asking because I'd like to know whether ALL $scope variables get checked whenever the method $scope.$apply() is called.
I read somewhere that watches are only created if a $scope variable was referenced in the view, which is quite confusing to me, as I have $scope variables that get "digested" even tough they are not directly referenced in the view.

A:

All 'live' scope variables/functions get 'dirty checked' during the digest cycle.
A scope variable doesnt have to be interpolated into the view to be useful.
Some other directive can use scope inheritance to access this scope variable or something can $watch this scope variable and then respond to the changes.
The only way to get scope to not be dirty check is to destroy it by placing it behind ng-if, ng-switch or by explicitly deleting. it.

