JavaScript variable hoisting explained
bytearcher.com