Данные хранятся в локальной переменной функции. Обычно к ней нельзя получить доступ извне функции, и при окончании работы функции локальные переменные удаляются. Но за счёт того, что создано замыкание, локальная переменная попала в окружение замыкания, тем самым увеличив счётчик обращения к переменной. И поэтому при окончании работы функции переменная не удалена, и может быть использована внутри замыкания (замыкание - это функция).
Вот очень хорошая статья, которая рассказывает про замыкания, а заодно ещё и про прототипы:
Особенности работы или «За что я люблю JavaScript».
Если интересно про прототипы, то вот
отличная статья про это.