Understanding core principles & implementation of Closure - the most powerful yet challenging concept in JavaScript