30 lines
		
	
	
		
			No EOL
		
	
	
		
			892 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			No EOL
		
	
	
		
			892 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
tags:
 | 
						|
  - Software_Engineering
 | 
						|
  - call_stack
 | 
						|
---
 | 
						|
 | 
						|
# The call-stack
 | 
						|
 | 
						|
A [stack](/Data_Structures/Stacks.md) data structure that holds the information of the functions called within a program that allows transfer of the application control from these functions to the main process after code inside the functions has been executed.
 | 
						|
 | 
						|
## Example
 | 
						|
 | 
						|
```js
 | 
						|
function greet(who){
 | 
						|
	console.log("Hello " + who);
 | 
						|
}
 | 
						|
 | 
						|
greet("Harry");
 | 
						|
 | 
						|
console.log("Bye");
 | 
						|
```
 | 
						|
### Breakdown 
 | 
						|
1. Interpreter receives call to `greet()`
 | 
						|
2. Goes to the definition of this function   (`function greet(who)...`) 
 | 
						|
3. Executes the `console.log` within this function
 | 
						|
4. Returns to the location that called it (`greet("Harry")`)
 | 
						|
5. Finds that there is nothing else to do in this function so moves to next function: the `console.log("bye")`
 | 
						|
6. Executes
 | 
						|
7. Returns to line that called it. Finds nothing else to do. Exits program.
 | 
						|
    |