https://smhatre59.medium.com/difference-between-closure-and-lexical-scope-in-javascript-with-example-894dd7806c5f