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 a after that set 12 as the value. - 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 local memory for the execution context - 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
- return the value 4 as a result of the function and set it to the twoSquare value - 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
- then console log hello - end the global execution context
Top comments (0)