Closure is when a function is able to remember is lexical scope even when that function is executing outside its lexical scope.
Lets Looks at a Practical Example:
Line 10:we declare a constant to the return value of
Line 1:Our Definition for
outer(), jumping into the function we can see on
Line 2we declare a variable
counterand assign it the value of
Line 4: Our Definition of
inner(). Jumping into the function we see we increment
counterand then return it.
Line 9:We return the inner function 🚨…
Lets simply start by showing some simple examples:
A function declaration is simply a statement that starts with the word
Line 1is a function declaration because it starts with the keyword
Line 13is us actually invoking the function declaration and executing the code stored inside.
A function expression is simply a function that does not start with the word
Lexical Scope — The scope of a name binding — an association of a name to an entity, such as a variable — is the region of a computer program where the binding is valid
Scope Simply determines the visibility of variables through a certain set of rules which are set in place and change depending on the Language you are programming in — Thats it, not too complicated!
Lexical Scope, is a type of scope — Sometimes also referred to as
Static Scope. Lexical Scoping simply defines how variable names are resolved in nested functions e.g …
In Computer Programming, the scope of a name binding — an association of a name to an entity, such as a variable — is the region of a computer program where the binding is valid:where the name can be used to refer to the entity. Such a region is referred to as a scope block.
So, the above definition may be a little hard to depict, so lets examine what that means in reference to python and its own Scope
1. Local — Inside the current function 2. Enclosing — Inside enclosing functions 3. Global — At the top level…