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 :
undefined là một giá trị toàn cục thể hiện sự vắng mặt của một giá trị được gán.
typeof undefined === 'undefined'
null là một đối tượng chỉ ra một biến đã được gán rõ ràng là “không có giá trị”
typeof null === 'object'
Đặ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:
Một biến khi nó được khai báo nhưng không được gán giá trị (tức là được xác định)
let foo;
console.log('is undefined?', foo === undefined);
// is undefined? true
Truy cập giá trị của thuộc tính không tồn tại
let foo = {a: 'a' };
console.log('is undefined?', foo.b === undefined);
// is undefined? true
Giá trị trả về của một hàm không trả về giá trị
function foo() { return; }
console.log('is undefined?', foo() === undefined);
// is undefined? true
Giá trị của một đối số hàm được khai báo nhưng đã bị bỏ qua khỏi lệnh gọi hàm
function foo(param) {
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ứ.