How do JavaScript closures work?
stackoverflow.com