JavaScript xác định kiểu dữ liệu như thế nào

JavaScript là một ngôn ngữ không hoàn hảo đến mức bạn thậm chí không thể dựa vào nó để làm những việc đơn giản như kiểm tra các loại dữ liệu

Trong JavaScript, có 8 loại dữ liệu và chủ yếu có 3 cách để kiểm tra xem giá trị đã cho thuộc loại nào. Trong bài đăng này, tôi sẽ đề cập đến chúng là gì, khi nào nên sử dụng chúng và theo ý kiến ​​​​của tôi, cái nào là tốt nhất

Tl;dr#

  • Không có cách tích hợp nào để kiểm tra các loại dữ liệu trong JavaScript đơn giản và toàn diện. Tất cả các cách bản địa hiện tại đều không hoàn hảo (hoặc đơn giản là có lỗi), vì vậy chúng tôi gặp khó khăn khi sử dụng cách của riêng mình
  • Quên
    let Car = function () {};
    let benz = new Car();
    benz instanceof Car; // true
    
    7 và
    let Car = function () {};
    let benz = new Car();
    benz instanceof Car; // true
    
    8 đi, cách tốt nhất để kiểm tra kiểu dữ liệu là sử dụng
    let Car = function () {};
    let benz = new Car();
    benz instanceof Car; // true
    
    9

toán tử typeof#

Toán tử

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
7 có lẽ là toán tử đầu tiên xuất hiện trong đầu. Nó hoạt động tốt cho
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
1,
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
2,
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
3,
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
4,
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
5,
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
6 nhưng có một số cạm bẫy cần chú ý khi sử dụng
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
7

  • đó là một lỗi đã biết mà
    let Car = function () {};
    let benz = new Car();
    benz instanceof Car; // true
    
    8. Lịch sử của typeof null bao gồm lỗi này một cách chi tiết
  • nó không phân biệt các đối tượng đơn giản với các đối tượng dựng sẵn khác, ngoại trừ
    let Car = function () {};
    let benz = new Car();
    benz instanceof Car; // true
    
    6

    ________số 8

Hãy chuyển sang tùy chọn tiếp theo - toán tử

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
8

toán tử instanceof#

Toán tử

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
8 kiểm tra hàm tạo của một đối tượng. Nói cách khác, nó kiểm tra xem lớp nào đã tạo ra một giá trị nhất định

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true

Do đó,

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
02  có thể xác định chính xác các loại đối tượng, nhưng không phải đối với các loại nguyên thủy

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
0

Ngoài ra, vì

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
8 kiểm tra hàm tạo của một đối tượng, nếu bạn sửa đổi nguyên mẫu của một đối tượng trong thời gian chạy, kết quả của việc kiểm tra
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
8 có thể thay đổi

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
2

Như bạn có thể thấy, cả

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
7 và
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
8 đều không hoàn hảo và hầu hết mọi người phải tận dụng và kết hợp cả hai phương pháp để thực hiện kiểm tra loại

đối tượng. nguyên mẫu. phương thức toString#

Hóa ra có một cách thứ ba, được cho là tốt hơn để kiểm tra các loại dữ liệu trong JavaScript –

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
9. Đó là một phương thức tồn tại trên
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
08, trả về một giá trị chuỗi được sử dụng để mô tả một đối tượng dựa trên
let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
09 của nó. Nếu bạn xem thông số kỹ thuật của nó, bạn sẽ nhận ra rằng nó thực sự là giải pháp toàn diện mà chúng tôi đang tìm kiếm khi kiểm tra các loại dữ liệu

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
5

Với một chút xử lý chuỗi bằng cách sử dụng

let Car = function () {};
let benz = new Car();
benz instanceof Car; // true
20, chúng tôi có thể đưa ra giải pháp sau đây có thể giải thích cho mọi trường hợp

Trình thông dịch JavaScript xác định loại dữ liệu biến như thế nào?

Javascript là ngôn ngữ được nhập động, có nghĩa là các loại biến được xác định trong thời gian chạy (được thực hiện hoàn toàn bởi trình thông dịch), không giống như kiểu nhập tĩnh .

JavaScript xử lý các loại như thế nào?

Loại ép buộc. Như đã đề cập ở trên, JavaScript là ngôn ngữ được đánh máy yếu . Điều này có nghĩa là bạn có thể thường xuyên sử dụng giá trị của một loại trong đó loại khác được mong đợi và ngôn ngữ sẽ chuyển đổi giá trị đó thành loại phù hợp với bạn.

Chúng tôi có thể kiểm tra loại dữ liệu trong JavaScript không?

typeof là một từ khóa JavaScript sẽ trả về loại biến khi bạn gọi nó . Bạn có thể sử dụng điều này để xác thực các tham số chức năng hoặc kiểm tra xem các biến đã được xác định chưa. Ngoài ra còn có những công dụng khác. Toán tử typeof rất hữu ích vì nó là một cách dễ dàng để kiểm tra loại biến trong mã của bạn.

7 loại dữ liệu trong JavaScript là gì?

Có bảy kiểu dữ liệu nguyên thủy, Số, Chuỗi, Boolean, NULL, Không xác định và Biểu tượng và một 'đối tượng' kiểu dữ liệu không nguyên thủy. Có sự khác biệt giữa NULL và kiểu dữ liệu không xác định mặc dù cả hai đều chứa cùng một giá trị