Przeglądarki nie udostępniają domyślnie zachowania, o które Ci chodzi. Zwykłe zmienne nie mają metod analogicznych do addEventListener i nie można podpiąć do nich zdarzenia.
Ale od czego jest programowanie obiektowe i enkapsulacja? Możesz sam stworzyć sobie obiekt-kontener, czy raczej otoczkę (ang. wrapper). Obiekt przechowywałby jakąś wartość i pozwalał na jej zmianę lub pobranie za pomocą odpowiednich metod (setValue, getValue). Mógłbyś samodzielnie napisać i dodać do obiektu metodę addEventListener, czy może addChangeListener, bo jedynym obsługiwanym zdarzeniem byłaby zmiana (ang. change) wartości. addChangeListener(handler) dodawałaby funkcję handler do wewnętrznej tablicy funkcji przechowywanym w naszym obiekcie-wrapperze. Wywołanie setValue ustawiałoby nową wartość zmiennej przechowywanej w obiekcie i gdyby nowa wartość była inna niż stara, wyzwalane byłyby po kolei wszystkie funkcje z wewnętrznej tablicy funkcji obsługujących zdarzenie change (te dodane przez addChangeListener).
W tych funkcjach mógłbyś sobie dodać warunek, że jeśli wrapper.getValue() === X, to wtedy wykonaj taką i taką akcję.
Czyli: da się to zrobić i to dosłownie podstawy programowania obiektowego, choć tak naprawdę mamy tu do czynienia z dwoma tzw. wzorcami projektowymi (Pełnomocnik, Obserwator). Ale trzeba to zrobić samodzielnie.