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 chứa giá trị.

  • null
  • undefined

Toán tử typeof


Chúng ta có thể sử dụng toán tử typeof để tìm kiểu dữ liệu của một biến JavaScript.

Ví dụ

typeof "john"
typeof 3.14
typeof NaN
typeof false
typeof [1,2,3,4]
typeof {name:'john', age:34}
typeof new Date()
typeof function () {}
typeof myCar
typeof null

Xem kết quả

Chúng ta hãy quan sát:

  • Kiểu dữ liệu của NaNnumber
  • Kiểu dữ liệu của một mảngđối tượng
  • Kiểu dữ liệu của một ngàyđối tượng
  • Kiểu dữ liệu của null đối tượng
  • Kiểu dữ liệu của một biến undefinedundefined *
  • Kiểu dữ liệu của một biến chưa được gán giá trị cũng là undefined *
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 ban đầu


Giá trị dữ liệu ban đầu 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 những kiểu nguyên thủy này.

  • string
  • number
  • boolean
  • undefined

Ví dụ

typeof "john"
typeof 3.14
typeof true 
typeof false 
typeof x // Nếu x không có giá trị

Xem kết quả

Dữ liệu phức tạp hơn


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ề kiểu "object" cho các đối tượng, mảng và null.

Toán tử typeof không trả về "object" cho các hàm.

Ví dụ

typeof {name:'john', age:34}
typeof [1,2,3,4]
typeof null 
typeof function myFunc(){}

Xem kết quả

Toán tử typeof trả về "object" cho mảng vì trong JavaScript mảng là đối tượng.

typeof không phải là một biến. Nó là một toán tử. Các toán tử (+ - * /) không có bất kỳ kiểu dữ liệu nào.

Tuy nhiên, toán tử typeof luôn trả về một chuỗi (chứa kiểu của toán hạng).

Thuộc tính constructor


Thuộc tính constructor trả về hàm khởi tạo cho tất cả các biến JavaScript.

Ví dụ

"john".constructor 
(3.14).constructor 
false.constructor 
[1,2,3,4].constructor 
{name:'john', age:34}.constructor 
new Date().constructor 
function () {}.constructor

Xem kết quả

Chúng ta có thể sử dụng thuộc tính constructor để kiểm tra xem một đối tượng có phải là một Array (chứa từ "Array") hay không.

Ví dụ

function isArray(x){
    return x.constructor.toString().indexOf("Array") > -1;
}

Xem kết quả

Hoặc đơn giản hơn, chúng ta có thể kiểm tra xem đối tượng có phải là một hàm Array hay không.

Ví dụ

function isArray(x){
    return x.constructor === Array;
}

Xem kết quả

Chúng ta có thể kiểm tra thuộc tính constructor để tìm xem một đối tượng có phải là Date(chứa từ "Date") hay không.

Ví dụ

function isArray(x){
    return x.constructor.toString().indexOf("Date") > -1;
}

Xem kết quả

Hoặc đơn giản hơn, chúng ta có thể kiểm tra xem đối tượng có phải là hàm Date hay không.

Ví dụ

function isArray(x){
    return x.constructor === Date;
}

Xem kết quả

Kiểu dữ liệu undefined


Trong JavaScript, một biến không có giá trị sẽ có giá trị undefined. Kiểu cũng vậy undefined.

Ví dụ

var x;
document.getElementById('demo').innerHTML = x + '<br/>' + typeof x;

Xem kết quả

Bất kỳ biến nào cũng có thể được làm rỗng bằng cách đặt giá trị thành undefined. Kiểu cũng sẽ là undefined.

Ví dụ

var x = 100;
x = undefined;

Xem kết quả

Giá trị rỗng


Giá trị rỗng không liên quan gì undefined. Một chuỗi rỗng có cả giá trị pháp lý và kiểu.

Ví dụ

var x = "";

Xem kết quả

Giá trị null


Trong JavaScript, giá trị null nghĩa là "không có gì". Nó được định nghĩa là một cái gì đó không tồn tại.

Tuy nhiên, trong JavaScript, kiểu dữ liệu của null là một đối tượng.

Đây có thể coi đó là một lỗi trong JavaScript typeof null là một đối tượng. Nó phải là null.

Chúng ta có thể làm trống một đối tượng bằng cách đặt nó thành null.

Ví dụ

const cars = {Innova:'white',Camry:'blue'};
cars = null;

Xem kết quả

Chúng ta cũng có thể làm trống một đối tượng bằng cách đặt nó thành undefined.

Ví dụ

var cars = {Innova:'white',Camry:'blue'};
cars = undefined;

Xem kết quả

Sự khác biệt giữa Undefined và Null


undefinednull bằng nhau về giá trị nhưng khác về kiểu dữ liệu.

Ví dụ

typeof null
typeof undefined
(null === undefined)
(null == undefined)

Xem kết quả