Describe what the stack is
Describe a stack frame
Describe the heap
What is the Stack?
An ordered data structure
Keeps track of function invocations
Part of the JavaScript runtime (you don't access it directly)
How Your Code Changes the Stack
Whenever you invoke a function, the details of the invocation are saved to the top of the stack (pushed to the top)
Whenever a function returns, the information about the invocation is taken off the top of the stack (popped off of the top)
1 function multiply(x, y) {
2 return x * y;
3 }
4
5 var res = multiply(3,5);
Stack Example
Stack:
1 function multiply(x, y) {
2 return x * y;
3 }
4
5 var res = multiply(3,5);
Stack Example
5 function: main
Stack:
1 function multiply(x, y) {
2 return x * y;
3 }
4
5 var res = multiply(3,5);
Stack Example
5 function: main
Stack:
2 function: multiply
1 function multiply(x, y) {
2 return x * y;
3 }
4 // res is 15
5 var res = multiply(3,5);
Stack Example
5 function: main
Stack:
1 function multiply(x, y) {
2 return x * y;
3 }
4
5 var res = multiply(3,5);
Stack Example
Stack (Empty):
1 function multiply(x, y) {
2 return x * y;
3 }
4
5 var res = multiply(3,5);
Stack Frame:
From Stack Example
5 function: main
Stack:
2 function: multiply
Stack Frame
Stack Frame Contents
The function that was invoked
The parameters that were passed to the function
Current line number
5 function: main
2 function: multiply
Stack Definition
An ordered set of stack frames
Most recently invoked function is on the top of the stack
The bottom of the stack is the first function invoked
The stack is processed from top to bottom
Heap Definition
An area in memory where the your data is stored
// The object is created in
// the heap. obj is a reference
// to the object.
var obj = {firstName: "Tim",
lastName: "Garcia"};
// New data is not created,
// only a copy of the reference
var referenceCopy = obj;