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 null
và undefined
.
null
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ến là null
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 null
và undefined
Mặc dù undefined
và null
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.
null
và undefined
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 null
và undefined
đề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
undefined
primitive
string