Understanding Callback Hell and Inversion of Control in JavaScript
1. Definition
In JavaScript, undefined and not defined represent two completely different states of variables.
- undefined → Variable exists but no value is assigned yet
- not defined → Variable does not exist at all in memory
This difference comes from how JavaScript handles memory and execution internally.
2. Why This is Important
- Helps avoid runtime errors
- Essential for debugging
- Very common in interviews
- Core concept of JavaScript execution
3. How JavaScript Handles Variables
JavaScript runs code in two phases:
Memory Creation Phase
- Variables are created
- All variables are assigned
undefined
Execution Phase
- Code runs line by line
- Values are assigned
4. Example (undefined)
var a; console.log(a);
Output
undefined
Step-by-Step Execution
- Memory phase → a = undefined
- Execution → console.log(a)
- Output → undefined
5. Example (not defined)
console.log(b);
Output
ReferenceError: b is not defined
Step-by-Step Execution
- No variable b in memory
- JavaScript searches for it
- Throws ReferenceError
6. Key Difference
- undefined → memory exists
- not defined → memory does not exist
7. Common Mistakes
- Confusing undefined with null
- Accessing variables before declaration
- Forgetting var/let/const
8. Real-World Analogy
- undefined → empty box 📦
- not defined → no box 🚫
Final Summary:
undefined → variable exists but no value
not defined → variable does not exist
undefined → variable exists but no value
not defined → variable does not exist
Conclusion
Understanding this concept helps you debug faster and understand JavaScript execution deeply.
Tags
Javascript