Не работает потому, что при выполнении участок кода
var a=a;
идентичен следующему:
var a;
a=a;
То есть вначале объявляется переменная в локальной области видимости (которая имеет значение undefined), а затем она присваивается сама себе (опять все тот же undefined).