Understanding JavaScript undefined and null: The Complete Guide
One of the most common sources of confusion in JavaScript is the difference between undefined and null. Both represent "emptiness" in JavaScript, but they have different use cases and behaviors.
What is undefined?
undefined means a variable has been declared but has not yet been assigned a value.
let message;
console.log(message); // undefined
let user = { name: 'John' };
console.log(user.email); // undefined
When undefined occurs:
- Variable declared but not initialized
- Missing function argument
- Missing object property
- Function that doesn't return a value
What is null?
null is an assignment value. It can be assigned to a variable as a representation of no value.
let user = null;
console.log(user); // null
Key Differences
| Feature | undefined | null |
|---|---|---|
| Type | undefined | object |
| Meaning | Not yet assigned | Explicitly empty |
| Usage | Automatic | Intentional assignment |
The Tricky typeof Behavior
typeof undefined // 'undefined'
typeof null // 'object' (this is a JavaScript bug!)
null === null // true
undefined === undefined // true
Best Practices
- Use
undefinedfor "not yet assigned" values - Use
nullwhen you want to explicitly indicate "no value" - Use loose equality carefully:
null == undefinedis true - Use strict equality:
null === undefinedis false
Modern Checking Techniques
Use optional chaining and nullish coalescing:
// Optional chaining
const name = user?.name;
// Nullish coalescing
const fallback = value ?? 'default';
This guide covers one of the most frequently asked questions on Stack Overflow about JavaScript fundamentals.