when the javascript engine starts executing the code it does :
executing code line by line
store the data after executing
and it knows the order of executions via call stack. at the bottom of the call stack, there is always a global execution context that will stay.
Running the code is also known as Execution Context
as an example let’s analyze this code
while executing this code by order:
– in the memory create a variable and name it square after that set a function definition as a value
– in the memory create a variable and name it sum after that set a function definition as a value
– call the sum
– push sum on top of the call stack
– get the function definition from the global memory
– create a brand new execution context for sum.
– create a variable in the local memory and name it twoSquare until finding the value set null as a value
– call the square function:
– push the square function on top of the call stack
– get the function definition from global memory
– create a new execution context for square
– remove(pop) the square function from the call stack
– The square execution context will be destroyed by the garbage collector.
– get the value of the variable a from the global variable
– calculate the execution context and return the value 16 as a result of the function
– remove the function sum from the call stack
– garbage collector will destroy the execution context for function sum
– end the global execution context