Difference Between null and undefined in JS

What is null?

null means the variable is intentionally empty — like a placeholder. It tells us that the variable has no value right now but might be given one later. The type of null is an object.

let num = null;

console.log(num);         // null
console.log(typeof num);  // "object"

Sometimes, null shows up due to errors. For example, when you try to get an HTML element that doesn't exist:

var saveButton = document.getElementById("save");

if (saveButton !== null) {
    saveButton.submit();
}

What is undefined?

A variable is undefined when no value has been assigned to it — not even null.

let num;
console.log(num); // "undefined"

Here’s an example where a function doesn’t return anything, so the result becomes undefined:

function greet() {
    alert("Hi");
}

let str = greet(); // undefined, because there's no return

Key Differences Between null and undefined

  • null is explicitly assigned by the developer.
  • undefined is automatically assigned when no value is given.
let num1 = null;
let num2;

console.log(num1); // null
console.log(num2); // undefined

Empty string ('') vs null vs undefined

let str = '';

console.log(typeof str);         // "string"
console.log(str === null);       // false
console.log(str === undefined);  // false

Data Types

let num1 = null;
let num2;

console.log(typeof num1); // "object"
console.log(typeof num2); // "undefined"

Comparison Using === and ==

Use === to avoid incorrect comparisons. == can give misleading results.

let num1 = null;
let num2;

console.log(num1 == null);        // true
console.log(num2 == undefined);   // true

console.log(num1 == undefined);   // true (but misleading)
console.log(num2 == null);        // true (but misleading)

console.log(num1 === null);       // true
console.log(num2 === undefined);  // true

console.log(num1 === undefined);  // false
console.log(num2 === null);       // false

console.log(num1 == num2);        // true (incorrect)
console.log(num1 === num2);       // false

Using in if Conditions

Both null and undefined are treated as false in conditions.

let num1 = null;
let num2;

if (num1) {
  console.log(num1);
} else {
  console.log("num1 is null");
}

if (num2) {
  console.log(num2);
} else {
  console.log("num2 is undefined");
}

Numeric Expressions

null is treated as 0 in math; undefined becomes NaN.

let num1 = null;
let num2;

console.log(num1 + 10); // 10
console.log(num2 + 10); // NaN

String Concatenation

let num1 = null;
let num2;

console.log(num1 + " Hello"); // "null Hello"
console.log(num2 + " Hello"); // "undefined Hello"
Note: null and undefined are common causes of runtime errors in JavaScript. Always check if a variable is null or undefined before using it.