Quel codice non e` JS corretto: non si possono innestare le funzioni.

Supponendo di chiudere la funzione a() prima di aprire b(), la cosa ancora non e` possibile: per conoscere il valore di una variabile locale di un'altra funzione, devi passargliela in qualche modo (tamite una var globale, tramite il passaggo di un parametro, ...).

E la cosa e` vera indipendentemente dal nome che dai alle variabili (nel tuo esempio usi tre variabili diverse con lo stesso nome e scope diversi), ma sarebbe altrettanto vero se i nomi fossero diversi.

Ma dato che ti stai divertendo con le variabili, ti faccio un altro esempio (valido):
codice:
var i = "ciao pippo";
alert(i);
for(var i=0; i<3; i++) {
  alert(i);
}
alert(i);
Dentro il for non e` possibile conoscere cosa contiene la variabile esterna i

Altro esempio:
codice:
var i = 100;
var t = "ciao pippo";
alert(i+"  "+t);
for(var i=0; i<3; i++) {
  alert(i+"  "+t);
  var t = "sono dentro";
}
alert(i+"  "+t);