Trong quá trình lập trình với JavaScript, hai khái niệm ‘undefined’ và ‘not defined’ thường xuất hiện, nhưng nhiều người vẫn chưa thực sự hiểu rõ sự khác biệt giữa chúng. Bài viết này sẽ giúp bạn giải thích chi tiết và cung cấp các ví dụ cụ thể.
undefined trong JavaScript
Định nghĩa
Khi một biến được khai báo nhưng không được gán giá trị, giá trị mặc định của nó là undefined. Đây là trạng thái tự nhiên khi biến đã được khai báo nhưng chưa định nghĩa.
Ví dụ cơ bản
let a;
console.log(a); // Kết quả: undefined
Trường hợp khác
Biến nhận giá trị undefined khi hàm không trả về giá trị gì.
function myFunction() {}
console.log(myFunction()); // Kết quả: undefined
not defined trong JavaScript
Định nghĩa
Khi một biến chưa được khai báo nhưng lại được truy cập, JavaScript sẽ ném ra lỗi ReferenceError: variable is not defined. Điều này có nghĩa là biến hoàn toàn chưa được định nghĩa trong phạm vi hiện tại.
Ví dụ cơ bản
console.log(b); // Kết quả: ReferenceError: b is not defined
Trường hợp khác
Biến không khai báo dẫn đến lỗi khi cố gắng truy cập.
if (someCondition) {
let c = 10;
}
console.log(c); // Kết quả: ReferenceError: c is not defined
Sự khác biệt chính
Khai báo và Gán giá trị
undefined xuất hiện khi biến đã được khai báo nhưng chưa gán giá trị.
let x;
console.log(x); // Kết quả: undefined
not defined xuất hiện khi biến chưa được khai báo.
console.log(y); // Kết quả: ReferenceError: y is not defined
Giá trị trả về của hàm
undefined khi hàm không trả về giá trị.
function testFunc() {}
console.log(testFunc()); // Kết quả: undefined
So sánh với null
undefined và null đều đại diện cho giá trị không xác định, nhưng khác nhau về ngữ nghĩa.
let z = null;
console.log(z); // Kết quả: null
console.log(typeof z); // Kết quả: object
Kết luận
Trong JavaScript, việc hiểu rõ khái niệm ‘undefined’ và ‘not defined’ rất quan trọng để tránh các lỗi không mong muốn và giúp mã của bạn trở nên tối ưu hơn. ‘undefined’ là khi biến được khai báo nhưng chưa gán giá trị, còn ‘not defined’ là khi biến chưa được khai báo trước đó.