JavaScript typeof
Trong JavaScript, có 5 kiểu dữ liệu khác nhau có thể chứa các giá trị:
string
number
boolean
object
function
Có 6 loại đối tượng:
Object
Date
Array
String
Number
Boolean
Và 2 kiểu dữ liệu không thể chứa giá trị:
null
undefined
Loại toán tử
Bạn có thể sử dụng typeof
toán tử để tìm kiểu dữ liệu của một biến JavaScript.
Thí dụ
typeof "John"
// Returns "string"
typeof 3.14
// Returns "number"
typeof NaN
// Returns "number"
typeof false
// Returns "boolean"
typeof [1,2,3,4] // Returns
"object"
typeof {name:'John', age:34}
// Returns "object"
typeof new Date()
// Returns "object"
typeof function () {} // Returns
"function"
typeof myCar
// Returns "undefined" *
typeof null
// Returns "object"
Hãy quan sát:
- Kiểu dữ liệu của NaN là số
- Kiểu dữ liệu của một mảng là đối tượng
- Kiểu dữ liệu của một ngày là đối tượng
- Kiểu dữ liệu của null là đối tượng
- Kiểu dữ liệu của một biến không xác định là không xác định *
- Kiểu dữ liệu của một biến chưa được gán giá trị cũng không được xác định *
Bạn không thể sử dụng typeof
để xác định xem một đối tượng JavaScript là một mảng (hay một ngày tháng).
Dữ liệu nguyên thủy
Giá trị dữ liệu nguyên thủy là một giá trị dữ liệu đơn giản không có thuộc tính và phương thức bổ sung.
Toán tử typeof
có thể trả về một trong các kiểu nguyên thủy sau:
string
number
boolean
undefined
Thí dụ
typeof "John" // Returns
"string"
typeof 3.14 // Returns
"number"
typeof true // Returns
"boolean"
typeof false // Returns
"boolean"
typeof x
// Returns "undefined" (if x has no value)
Dữ liệu phức tạp
Toán tử typeof
có thể trả về một trong hai kiểu phức tạp:
function
object
Toán tử typeof
trả về "đối tượng" cho các đối tượng, mảng và null.
Toán tử typeof
không trả về "đối tượng" cho các hàm.
Thí dụ
typeof {name:'John', age:34} // Returns "object"
typeof [1,2,3,4]
// Returns "object" (not "array", see note below)
typeof null // Returns
"object"
typeof function myFunc(){} // Returns "function"
Toán tử typeof
trả về " object
" cho các mảng vì trong JavaScript, các mảng là các đối tượng.
Kiểu dữ liệu của typeof
Toán tử typeof
không phải là một biến. Nó là một nhà điều hành. Các toán tử (+ - * /) không có bất kỳ kiểu dữ liệu nào.
Tuy nhiên, typeof
toán tử luôn trả về một chuỗi (chứa kiểu của toán hạng).
Thuộc tính phương thức khởi tạo
Thuộc constructor
tính trả về hàm tạo cho tất cả các biến JavaScript.
Thí dụ
"John".constructor
// Returns function String() {[native code]}
(3.14).constructor
// Returns function Number() {[native code]}
false.constructor // Returns
function Boolean() {[native code]}
[1,2,3,4].constructor
// Returns function Array() {[native code]}
{name:'John',age:34}.constructor
// Returns function Object() {[native code]}
new Date().constructor
// Returns function Date() {[native code]}
function () {}.constructor // Returns
function Function(){[native code]}
Bạn có thể kiểm tra thuộc tính phương thức khởi tạo để tìm xem một đối tượng có phải là một Array
(chứa từ "Array") hay không:
Thí dụ
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
Hoặc đơn giản hơn, bạn có thể kiểm tra xem đối tượng có phải là một hàm Array hay không :
Thí dụ
function isArray(myArray) {
return myArray.constructor
=== Array;
}
Bạn có thể kiểm tra thuộc tính phương thức khởi tạo để tìm xem một đối tượng có phải là một
Date
(có chứa từ "Ngày") hay không:
Thí dụ
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
Hoặc đơn giản hơn, bạn có thể kiểm tra xem đối tượng có phải là hàm Date hay không :
Thí dụ
function isDate(myDate) {
return myDate.constructor === Date;
}
Chưa xác định
Trong JavaScript, một biến không có giá trị sẽ có giá trị undefined
. Kiểu cũng vậy undefined
.
Thí dụ
let car; // Value is undefined,
type is undefined
Bất kỳ biến nào cũng có thể được làm trống bằng cách đặt giá trị thành undefined
. Loại cũng sẽ được undefined
.
Thí dụ
car = undefined; // Value is undefined,
type is undefined
Giá trị trống
Giá trị trống không liên quan gì undefined
.
Một chuỗi rỗng có cả giá trị pháp lý và kiểu.
Thí dụ
let car = ""; //
The value is
"", the typeof is "string"
Vô giá trị
Trong JavaScript null
là "không có gì". Nó được cho là một cái gì đó không tồn tại.
Thật không may, trong JavaScript, kiểu dữ liệu của null
là một đối tượng.
Bạn có thể coi đó là một lỗi trong JavaScript typeof null
là một đối tượng. Nó nên được null
.
Bạn có thể làm trống một đối tượng bằng cách đặt nó thành null
:
Thí dụ
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; //
Now value is null,
but type is still an object
Bạn cũng có thể làm trống một đối tượng bằng cách đặt nó thành undefined
:
Thí dụ
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined; //
Now both value and type is undefined
Sự khác biệt giữa Undefined và Null
undefined
và null
bằng nhau về giá trị nhưng khác về loại:
typeof undefined
// undefined
typeof null
// object
null === undefined
// false
null == undefined
// true