Types trong Javascript
Bài đăng này đã không được cập nhật trong 6 năm
Các loại types trong Javascript
Javascript định nghĩa sẵn 7 loại types như dưới đây:
- null
- undefined
- boolean
- number
- string
- object
- symbol (mới được thêm trong ES6)
Lưu ý: tất cả những types trên ngoại trừ object
đều là những types "nguyên thủy".
Null
Trong javascript, null
nghĩa là không có gì cả. Chúng ta có thể hiểu là thứ gì đó không tồn tại. Thật không may là trong javascript data type của null
lại trả về object, chúng ta có thể kiểm tra với typeof
:
typeof null === "object"; // true
Sẽ tuyệt hơn biết bao nếu giá trị trả về ở trên là "null"
, nhưng bug (tính năng??) này đã xuất hiện gần 2 thập kỷ và gần như sẽ không bao giờ được fix vì rất nhiều trang web đang sống nhờ vào bug này, nếu fix nó thì kha khá trang web sẽ teo luôn...
Nếu bạn muốn test giá trị của 1 biến có phải là null
không, bạn có thể sử dụng cách sau:
var a = null;
(!a && typeof a === "object"); // true
null
mang giá trị falsy
(aka luôn sai) nhưng đồng thời nó lại trả về "object"
khi chúng ta kiểm tra với typeof
.
Undefined
Những biến mà không có giá trị, chúng sẽ có giá trị là undefined
. Dùng typeof
để kiểm tra những biến đó cũng sẽ trả về kết quả "undefined"
:
var a;
typeof a; // "undefined"
var b = 42;
var c;
// later
b = c;
typeof b; // "undefined"
typeof c; // "undefined"
Rất nhiều lập trình viên có thể nghĩ rằng undefined
và undeclared
giống nhau. Tuy nhiên trong JS, 2 khái niệm này khá là khác biệt.
undefined
là 1 biến đã được khai báo trong scope đang trỏ đến, nhưng ở thời điểm được gọi nó không có giá trị nào ở bên trong nó. Còn undeclared
là 1 biến thậm chí chưa được khai báo trong scope. Hãy cùng xem ví dụ:
var a;
a; // undefined
b; // ReferenceError: b is not defined
Khá là bực mình với thông báo lỗi được browser trả về trong trường hợp này. Như bạn có thể thấy, thông báo lỗi là "b is not defined"
, điều này làm chúng ta rất dễ nhầm lẫn sang "b is undefined"
. 1 lần nữa "undefined"
và "is not defined"
là 2 thứ khác biệt nhau hoàn toàn. Thật tuyệt biết bao nếu như browser báo lỗi đại loại như "b is not found"
hoặc "b is not declared"
, điều này sẽ giảm bớt biết bao nhầm lẫn, nhưng đời không như là mơ tập n ...
Còn 1 trường hợp đặc biệt khác với typeof
liên quan đến 2 thằng undefined
và undeclared
mà còn làm chúng ta xoắn não hơn nữa. Hãy xem:
var a;
typeof a; // "undefined"
typeof b; // "undefined"
typeof
trả về kết quả là "undefined"
cho cả 2 trường hợp undefined
và undeclared
. Hãy để ý thêm rằng thậm chí không có lỗi nào bắn ra khi chúng ta thực hiện typeof b
mặc dù chúng ta còn chưa khai báo thằng b
nữa. Đây là 1 cơ chế an toàn của typeof
(T_T).
Giống như trên, thật tuyệt nếu typeof
được dùng với undeclared
sẽ trả về "undeclared"
thay vì "undefined"
.
Boolean
Boolean
chỉ có thể có 2 giá trị là true
hoặc false
. Nó thường được sử dụng trong những câu điều kiện dạng if else
khi cần những giá trị logic có dạng đúng hoặc sai. Fun fact: Boolean được đặt tên theo nhà toán học George Boole
, người đã đi tiên phong trong lĩnh vực lý luận toán học.
Mọi thứ có "giá trị" đều là true
(aka truthy):
Boolean(100); //true
Boolean("hello"); //true
Có 1 số trường hợp đặc biệt có giá trị nhưng sẽ trả về kết quả là false
(aka falsy):
Boolean(0); //false
Boolean(""); //false
Boolean(null); //false
Boolean(undefined); //false
Boolean(false); //false - hiển nhiên :)))
Boolean(NaN); //false
Tạm kết
Trong bài viết này mình đã giới thiệu đến các bạn 3 loại types trong Javascript, còn 3 loại nữa mình sẽ giới thiệu với các bạn trong bài viết sau, xin cảm ơn vì đã đọc bài viết của mình.
Bài viết có tham khảo từ:
- You don't know JS - tác giả Jenn Lukas
- https://www.w3schools.com
All rights reserved