Ban đầu có thể thấy null và undefined về cơ bản giống nhau, tuy nhiên có những khác biệt nhỏ nhưng quan trọng.

undefined là sự vắng mặt của một giá trị trong trình biên dịch, bởi vì nơi nó phải là một giá trị, chưa được đặt một giá trị, giống như trường hợp của một biến chưa được gán :
Đặt một biến thành undefined có nghĩa là biến đó thực sự tồn tại. Một số quy trình, chẳng hạn như tuần tự hóa JSON, có thể tách các thuộc tính không xác định khỏi các đối tượng. Ngược lại các thuộc tính null chỉ ra sẽ được giữ nguyên để bạn có thể truyền đạt một cách rõ ràng khái niệm về thuộc tính “empty” (rỗng).
Đánh giá dưới đây là undefined:
console.log('is undefined?', foo === undefined);
// is undefined? true
console.log('is undefined?', foo.b === undefined);
// is undefined? true
console.log('is undefined?', foo() === undefined);
// is undefined? true
console.log('is undefined?', param === undefined);
}
foo('a');
foo();
// is undefined? false
// is undefined? true
undefined cũng là một thuộc tính của đối tượng cửa sổ toàn cầu.
// Chỉ trong trình duyệt
console.log(window.undefined); // undefined
window.hasOwnProperty('undefined'); // true
Phiên bản < 5
Trước ECMAScript 5, bạn có thể thay đổi giá trị của thuộc tính window.undefined thành bất kỳ giá trị nào khác có khả năng phá vỡ mọi thứ.