# JavaScript Closure

Before everything, we need to know JavaScript has 2 types of variables (based on Variable Scope to categorize), global & local variable !!

# Concept:

function having access to parent scope, especially function can use variable which is defined outside of the function!!!

Example:

var value = 0; // variable declared outside of function outputValue
function outputValue() {
  function plus () { value = value + 1 }; // value can be used inside the function
  plus();
  return value; // will return 1 as result
};
outputValue();

Another Example for scope of this:

var person = {
  name: 'damon',
  printPersonAttribute() {
    console.log('this.name: ', this.name); // damon
    function unableToPrintPersonAttribute() {
      console.log('nested this.name is not working: ', this.name); // undefined
    };
    unableToPrintPersonAttribute();
  },
}
person.printPersonAttribute();