https://medium.com/@mohitgadhavi1/understanding-lexical-scope-hoisting-a-guide-to-writing-efficient-and-bug-free-code-4b24ff6f5542