Bất cứ khi nào tôi gặp null hoặc undefined, tôi vô cùng bối rối về cách từng loại dữ liệu được sử dụng trong JavaScript.

Ý tôi là, sự khác biệt là gì? Không phải cả hai đều thể hiện khái niệm không có gì?

Tôi quyết định thực hiện một số nghiên cứu để hiểu sâu hơn về hai loại dữ liệu. Thật hữu ích khi có kiến thức này để bạn có thể sử dụng chúng một cách chính xác khi cần thiết. Tôi cũng đã học được rằng đôi khi, sự khác biệt giữa nullundefined xuất hiện trong các cuộc phỏng vấn. 👀

Introduction

JavaScript có 7 kiểu dữ liệu nguyên thủy, hai trong số đó là nullundefined.

Null là một giá trị gán, có nghĩa là bạn có thể gán giá trị null cho bất kỳ biến nào khi bạn muốn biến đó trống. Nó được cố ý để trống và sẽ trỏ đến một giá trị trống.

let hasCat = null;
// nullish

Undefined là một biến tồn tại nhưng chưa được khởi tạo YET. Có nghĩa là sau này, tôi có thể quay lại biến của mình và gán cho nó một giá trị mà trước đó nó không có. Vì vậy, nếu tôi khai báo một biến mà không có giá trị, nó chỉ được coi là không được khởi tạo.

let currentJob;
// undefined

Cách mà tôi hiểu cả hai là, vâng, cả hai đều rất giống nhau ở chỗ cả hai đều không có giá trị mà bạn đang cố gắng tiếp cận. Nếu bạn so sánh cả hai trong JavaScript, thì mặc nhiên chúng giống nhau vì JavaScript coi cả hai đều là giá trị trống. Nhưng vì cả hai đều là các kiểu dữ liệu khác nhau, nên nếu bạn so sánh chúng một cách rõ ràng, chúng sẽ dẫn đến giá trị falsey.

null == undefined;
// truthy

null === undefined;
// falsey

Analogy

Hãy tưởng tượng bạn đang di chuyển. Bạn đã mua một loạt các hộp. Bạn phải đóng gói đồ đạc của mình và đặt chúng vào bên trong những chiếc hộp đó. Nhưng bạn vô tổ chức nên bạn quên dán nhãn những gì trong hộp. Bạn có 5 hộp có đầy đủ các thứ và bạn có 2 hộp còn lại trống. Bạn muốn dán nhãn các hộp của mình nhưng bạn đã dán băng dính vào chúng, vì vậy bạn tự nhủ mình sẽ quay lại với nó sau. Hiện tại, 5 hộp là TBD. Và 2 hộp còn dư và trống rỗng. Trong code, nó sẽ giống như sau:

let fiveBoxes = undefined;
let twoBoxes = null;

Năm hộp với một loạt các thứ trong đó được coi là không xác định vì chúng có nhiều thứ trong đó nhưng bạn không biết có gì trong đó. Hai hộp còn trống là MEANT để không có bất kỳ thứ gì trong đó.

Null so với Undefined

Sự khác biệt giữa hai kiểu dữ liệu là:

Undefined

  • Khai báo
  • Chưa được khởi tạo
  • Phương pháp được chỉ định

Null

  • Thiếu
  • Trống rỗng
  • Không tồn tại
  • Người dùng được chỉ định

Truy cập bảng điều khiển của bạn và nhập:

typeof null
typeof undefined

Bạn được những gì?

Tổng kết.

Null và undefined không giống nhau. Điều quan trọng là phải tìm hiểu sự khác biệt giữa hai điều này để bạn tránh bất kỳ hành vi lỗi nào trong mã của mình và hiểu rõ ràng về lý do tại sao chúng tồn tại. Thật tuyệt nếu bạn cũng có thể nói rõ sự khác biệt trong một cuộc phỏng vấn 😉

Bài viết gốc tại đây.

Hiện tại khóa học Web Frontend + React.js tại Techmaster Vietnam vẫn liên tục tuyển sinh các lớp tiếp theo. Với cả hai hình thức là đào tạo Offline và học trực tuyến có tương tác. Và vẫn đảm bảo việc làm cho học viên tốt nghiệp đối với cả hai hình thức đào tạo.

Chi tiết khóa học: https://frontend.techmaster.vn/.

Liên hệ tư vấn: Mr Thịnh - 0987273764 (zalo).