Describe $broadcast, $emit, and $on in AngularJS and how they facilitate inter-controller communication.

$broadcast sends events to child scopes, $emit sends events to ancestor scopes, and $on listens for these events. They enable cross-controller communication, though overuse can impact performance and readability. Using services for shared data may be more efficient in large applications.

$scope.$emit('eventName', data); // Emit to ancestor scopes