rỗng và không xác định

JavaScript có nhiều cách để chỉ ra rằng không có giá trị. Trang này mô tả hai cách phổ biến nhất: kiểu dữ liệu nullundefined.

Từ khoá null thể hiện trường hợp không có giá trị được xác định có chủ đích. null là một giá trị gốc, mặc dù toán tử typeof trả về rằng null là một đối tượng. Đây là một lỗi đã xảy ra từ phiên bản JavaScript đầu tiên và được để lại có chủ đích chưa được xử lý để tránh làm hỏng hành vi dự kiến trên web.

typeof null
> object

Bạn có thể xác định một biếnnull với kỳ vọng phản ánh giá trị được gán cho quảng cáo tại một số thời điểm điểm trong một tập lệnh hoặc một giá trị vắng mặt rõ ràng. Bạn cũng có thể chỉ định null vào một tham chiếu hiện có để xoá một giá trị trước đó.

undefined

undefined là giá trị gốc được chỉ định cho các biến vừa được khai báo hoặc cho giá trị kết quả của một toán tử sẽ không trả về một giá trị có ý nghĩa. Ví dụ: điều này có thể xảy ra khi bạn khai báo một hàm trong bảng điều khiển dành cho nhà phát triển của trình duyệt:

function myFunction() {}
> undefined

Một hàm trả về undefined một cách rõ ràng khi câu lệnh return của hàm đó không trả về giá trị nào.

(function() {
   
return;
}());
> undefined

So sánh giữa nullundefined

Mặc dù undefinednull có một số chồng chéo về chức năng, nhưng chúng có mục đích khác nhau. Theo nghĩa chặt chẽ nhất, null đại diện cho một giá trị được cố ý xác định là "trống", và undefined cho biết thiếu giá trị được chỉ định.

nullundefined tương tự nhau nhưng không hoàn toàn bằng nhau. Toán tử đẳng thức rời buộc các toán hạng thuộc nhiều loại thành boolean làm cho nullundefined đều là false. Toán tử đẳng thức nghiêm ngặt coi toán hạng của các kiểu dữ liệu khác nhau là không bằng nhau.

null == undefined
> true

null === undefined
> false

Không giống như từ khoá dành riêng null, undefined là một thuộc tính của đối tượng toàn cục. Đây là thiết kế được đưa ra sớm trong quá trình phát triển JavaScript và cho phép các trình duyệt cũ ghi đè undefined hoàn toàn. Trong các trình duyệt hiện đại, bạn vẫn có thể sử dụng undefined làm giá trị nhận dạng trong các phạm vi không phải toàn cầu, ghi đè giá trị của giá trị đó trong phạm vi của nội dung khai báo đó. Không bao giờ sử dụng undefined làm giá trị nhận dạng. Nó có thể gây ra hành vi không mong muốn và có thể gây nhầm lẫn cho những người bảo trì cơ sở mã của bạn.

Kiểm tra kiến thức

typeof null trả về giá trị nào?

object
primitive
undefined
string