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 đó.