Originariamente inviato da Crypt
la variabile response che funziona solo all'interno di quella funzione.
errato, se ometti var qualunque variabile diventa globale e nel tuo caso, essendo sul browser, scrivere
codice:
response = "pippo";
oppure
codice:
window.response = "pippo";
è esattamente la stessa cosa, ergo senza var response sarà globale.

Il tuo problema è un altro, non hai ben chiaro il significato di asincrono (e non conosci le best practices Ajax, dato che fai N chiamate in un ciclo for ...) e ti aspetti che il return di onreadystatechange venga assegnato/eseguito come qualunque funzione.

Consiglio una lettura di un qualunque articolo/guida su Ajax, prima di proseguire