единственный известный мне способ отличить глобальную переменную
со значением undefined, от несуществующей переменной - это попытка присвоить её значение другой переменной. Вылетает исключение, которое мы перехватываем.
Причем надо пытаться взять значение самой переменной ( VAR ), а не через window ( window.VAR )
try { var aa=VAR; } // если тут отхватим исключение - значит у нас нет переменной VAR
catch(e) { VAR =undefined; }; // присвоение undefined значения - _определит_ переменную
// и далее её можно использовать
var bb=VAR; // тут уже не вылетит исключение