Bài viết sử dụng JavaScript để phân biệt các trường hợp:
undefined
: chưa khai báo, chưa tồn tại tham chiến, biến.null
: đối tượng chưa tồn tại.""
: rỗng.
Xét ví dụ 1 tham chiếu kiểu string
:
let str_a = null; // null let str_b = ""; // có dữ liệu là chuỗi 0 ký tự hay rỗng let str_c = "stdio"; // có dữ liệu là chuỗi 5 ký tự
Truy vấn thông tin sau để phân biệt các trường hợp
Trường hợp str_d - undefined
Giả sử truy vấn thông tin của biến str_d
với các khai báo trên, trong trường hợp này str_d
chưa được khai báo, biến str_d
chưa tồn tại, trường hợp này được gọi là undefined
.
Trường hợp str_a - null
Trường hợp biến str_a
đã được khai báo, do đó biến str_a
tồn tại và khác undefined
, nhưng đối tượng mà str_a
tham chiếu đến chưa tồn tại do đó str_a
là null
.
Trường hợp str_b và str_c
Trường hợp biến str_b
và str_c
đều cùng khác undefined
và khác null
, thực chất trường hợp này như nhau, str_b
và str_c
đều đã tham chiếu đến 1 đối tượng kiểu string
và chỉ khác ở giá trị dữ liệu đang lưu trữ.
str_b
tham chiếu đến 1 đối tượng kiểustring
với chuỗi có 0 ký tự.str_c
tham chiếu đến 1 đối tượng kiểustring
với chuỗi có 5 ký tự.
Mô phỏng
Bên trái là các biến, bên phải là các đối tượng:
str_d
: được mô phỏng bằng đường đứt nét nghĩa chưa tồn tại ->undefined
.str_a
: được mô phỏng bằng đường liền do đã được khai báo nhưng chưa tham chiếu đến đối tượng nào ->null
.str_b
,str_c
: được mô phỏng bằng đường liền do đã được khai báo, đối tượng tham chiếu đến cũng là đường liền nét nên 2 trường hợp này đều khácundefined
vànull
.