The simple answer is: A Execution Context Created.
Now I write a demo code below and I will say line by line, how the code run.
When you run this whole code a global EXECUTION CONTEXT is created and it contains two parts one is memory and the other is code execution.
When the first line is encountered it will reserve memory for all variables(n, three, five) and function(square). When reserving the memory for variables it reserves a special value undefined and for function, it stores whole code. the pictorial representation is shown below.
After allocating memory for all variables and function, code execution phase starts(code runs line by line).
Line 1: var n=3, 3 value placed into the n identifier.
Line 2-5: nothing to execute.
After allocating memory, the code execution phase comes here the code inside the function executes, and undefined is replaced by the actual value.
After that when return is encountered return the control of the program to the place where the function is invoked, control goes to line 6, it’s find the answer in local memory and return the control three and value of three(undefined) replaced by the value of ans and after that whole thing deleted(execution context).