Kiểm tra các loại biến JavaScript

Từ khóa typeof được sử dụng để phân biệt các kiểu nguyên thủy trong JavaScript. Nó sẽ trả về một trong chín chuỗi. undefined, object [có nghĩa là null], boolean, number, bigint, string, symbol, function hoặc object [có nghĩa là bất kỳ đối tượng nào, bao gồm cả mảng]

Ảnh của Mr Cup / Fabien Barral trên Bapt

Toán tử typeof rất hữu ích vì đây là một cách dễ dàng để kiểm tra loại biến trong mã của bạn. Điều này rất quan trọng vì JavaScript là ngôn ngữ được nhập động. — freeCodeCamp

T câu lệnh typeof2 thực sự hữu ích trong JavaScript để xác thực dữ liệu và kiểm tra kiểu, nhưng nó có một số tính năng kỳ lạ cần lưu ý.

Cụ thể, có hai trường hợp khi typeof trả về typeof4 theo cách không mong muốn và điều này làm cho việc kiểm tra kiểu trở nên hơi bất thường

Cả typeof typeof6 và typeof một mảng đều trả về typeof4 theo cách có khả năng gây hiểu nhầm, vì typeof9 là một kiểu nguyên thủy [không phải đối tượng] và mảng là một kiểu đối tượng đặc biệt, tích hợp sẵn trong JavaScript

Trong bài viết này, tôi kiểm tra mọi kết quả có thể có của typeof trong JavaScript

Ảnh của Alex Đọc trên Bapt

Loại dữ liệu

W hile chỉ có tám loại dữ liệu [bảy kiểu nguyên thủy và đối tượng] trong JavaScript, typeof sẽ thực sự trả về một trong chín tùy chọn.

  1. undefined
  2. object [có nghĩa là typeof9]
  3. boolean
  4. number
  5. bigint
  6. string
  7. symbol
  8. ________số 8
  9. object [có nghĩa là bất kỳ đối tượng nào, kể cả mảng]

Chúng tương ứng với các loại dữ liệu JavaScript, ngoại trừ typeof typeof9 cũng là typeof4 do một lỗi đã tồn tại từ lâu

Tiếp theo, tôi giải thích chi tiết khi mong đợi từng phản hồi từ typeof

Ảnh của Julia Margeth Theuer trên BaptKhông xác định

Một Giá trị undefined trong JavaScript khá phổ biến — nó có nghĩa là một tên biến đã được đặt trước, nhưng chưa có giá trị nào được gán cho tham chiếu đó. Nó chưa được xác định, vì vậy chúng tôi gọi nó là không xác định.

Giá trị object7 là một kiểu nguyên thủy trong JavaScript và các biến không được khai báo cũng được coi là không xác định

Tham chiếu các biến không được khai báo thường dẫn đến ReferenceError, ngoại trừ khi sử dụng từ khóa typeof

typeof undefined là chuỗi boolean1 — và undefined là một giá trị giả thường bằng với typeof9 nhưng không bằng với các giá trị giả khác

Do đó, nếu typeof nói một giá trị là boolean1, thì có thể đặt cược an toàn khi cho rằng giá trị đó thực sự là undefined — nghĩa là nó không được khai báo, đã khai báo nhưng chưa bao giờ được gán giá trị hoặc được khai báo và gán giá trị của undefined

Ảnh của Samuel Zeller trên UnsplashObject [có nghĩa là typeof9]

F hoặc lý do lịch sử, boolean9 trong JavaScript là typeof4. Đây là một lỗi được cho là sẽ không bao giờ được sửa trong JavaScript.

Điều đó có nghĩa là việc kiểm tra null không thể được thực hiện bằng cách sử dụng typeof

Tuy nhiên, việc kiểm tra null khá dễ dàng bằng cách sử dụng toán tử đẳng thức nghiêm ngặt [number2] để kiểm tra xem giá trị có thực sự là typeof9 hay không, như trong number4

Những điều hữu ích cần biết về null

  1. Giá trị typeof9 là sai [được đánh giá là sai trong điều kiện]
  2. Các giá trị typeof9 và undefined chỉ bằng nhau một cách lỏng lẻo
  3. Cả typeof9 và undefined đều không bằng các giá trị giả khác

Điều này có nghĩa là việc kiểm tra null bằng cách sử dụng toán tử đẳng thức lỏng lẻo [______50] sẽ thu được cả giá trị null và giá trị không xác định, điều này có thể hữu ích

Thông thường, giá trị undefined có nghĩa giống như giá trị typeof9 — không có giá trị, vì vậy nên sử dụng bigint3 để kiểm tra null

Mặt khác, việc kiểm tra null có thể được thực hiện dễ dàng với toán tử đẳng thức nghiêm ngặt number2

Hoặc người ta có thể kiểm tra bằng cách biết rằng vì đối tượng trống là trung thực [đánh giá thành Boolean bigint5 trong điều kiện], nên typeof9 là đối tượng giả duy nhất

Ảnh của Obi Onyeador trên BaptBoolean

C việc kiểm tra các giá trị Boolean thật dễ dàng — chúng sẽ là bigint5 hoặc bigint8, và giá trị typeof a boolean trả về string1.

Lưu ý rằng JavaScript sẽ ép buộc bất kỳ giá trị nào thành bigint5 hoặc bigint8 bằng cách sử dụng hàm bao bọc Boolean[], hàm này đặt hai dấu chấm than [logic NOT — string4] trước biểu thức. Hoặc nó sẽ đặt câu lệnh bên trong một câu điều kiện, chẳng hạn như câu lệnh if, toán tử dấu chấm hỏi string5 hoặc vòng lặp

Các giá trị ước tính thành _________ 58 được gọi là giá trị sai và mọi thứ khác trong JavaScript ước tính thành ________ 55 [và đây là giá trị trung thực]

Các giá trị giả trong JavaScript là bigint8, string9, symbol0, typeof9, undefined, symbol3 và chuỗi rỗng symbol4;

Ảnh của Andrik Langfield trên BaptNumber

C kiểm tra số trong JavaScript hoạt động như mong đợi, với typeof trả về symbol6.

Lưu ý rằng điều này có nghĩa là việc kiểm tra symbol7 yêu cầu kiểm tra sự bình đẳng vì symbol8 là giá trị duy nhất trong JavaScript không bằng chính nó

Ảnh của Kai Gradert trên BaptBigInt

symbol9 là một đối tượng tích hợp sẵn cung cấp cách biểu diễn các số nguyên lớn hơn 253 - 1, đây là số lớn nhất mà JavaScript có thể biểu diễn một cách đáng tin cậy với nguyên hàm function0. symbol9 có thể được sử dụng cho các số nguyên lớn tùy ý. ” — Tài liệu web MDN

C kiểm tra loại nguyên thủy symbol9 hoạt động như mong đợi; .

Lưu ý rằng symbol9 chưa phải là một phần của ECMAScript, tiêu chuẩn JavaScript chính thức, mặc dù nó đã được hỗ trợ bởi Chrome [và do đó bởi Node. js], Firefox và Edge

“Có khả năng cao là symbol9 sẽ là một phần của ECMAScript 2019 hoặc 2020. ” - Blog của Ralph

Ảnh của Sagar Dani trên BaptString

Như người ta có thể hy vọng việc kiểm tra một chuỗi trong JavaScript khá đơn giản — typeof hoạt động chính xác như mong đợi, trả về function8.

Chắc chắn là tốt khi mọi thứ hoạt động như bình thường khi lập trình

Ảnh của Mr Cup / Fabien Barral trên BaptSymbol

T ký hiệu kiểu dữ liệu nguyên thủy là một mã định danh duy nhất, hữu ích để tạo khóa trên các đối tượng trong JavaScript.

“Một giá trị biểu tượng có thể được sử dụng làm định danh cho các thuộc tính đối tượng; . ” — Tài liệu web MDN

Như mọi người mong đợi, function9 thực sự là typeof00

Ảnh của Shahadat Shemul trên BaptFunction

F các lệnh được kiểm tra dễ dàng bằng cách sử dụng từ khóa typeof, hoạt động hoàn toàn như mong đợi bằng cách trả về typeof02.

Ảnh của Dane Deaner trên UnsplashObject [Đối tượng có nghĩa hoặc Mảng]

miễn là giá trị được đề cập không phải là null, thì typeof trả về typeof4 có nghĩa là giá trị JavaScript là một đối tượng JavaScript.

Một loại đối tượng được tích hợp sẵn trong JavaScript là mảng và typeof của một mảng là typeof4. typeof07

ECMAScript 5 đã giới thiệu một phương thức typeof08 để kiểm tra một mảng, vì typeof sẽ không thể phân biệt các mảng từ các đối tượng khác

Các nguyên mẫu JavaScript typeof10 và typeof11 là hai loại đối tượng tích hợp khác trong đó typeof trả về “đối tượng. ” Do đó, ngày tháng và biểu thức chính quy cần có sự khác biệt hơn là chỉ sử dụng từ khóa typeof

Tôi trình bày cách kiểm tra loại đối tượng và mảng trong mã này

Câu lệnh JavaScript dài dòng typeof14 có thể phân biệt giữa các đối tượng chung, mảng và các đối tượng khác, bởi vì nó trả về một chuỗi xác định loại đối tượng chi tiết hơn so với typeof

Tác giả Moon mô tả phương pháp đó chi tiết hơn trong Lập trình tốt hơn

[Đối tượng đối tượng] trong JavaScript là gì. Vật. nguyên mẫu. toString

Giải thích sâu hơn về [đối tượng Đối tượng]

Trung bình. com

Tương tự, phương thức trợ giúp typeof08 hoặc từ khóa typeof17 có thể được sử dụng để kiểm tra mảng hoặc bất kỳ loại đối tượng nào tương ứng

Ảnh của Amador Loureiro trên Bapt Hãy coi chừng “Gotcha. ”

T các trình bao bọc đối tượng cho Boolean, số và chuỗi sẽ ngắt typeof và dẫn đến kết quả là typeof4 thay vì string1, symbol6 hoặc function8.

Tại sao các trình bao bọc đối tượng này tồn tại nếu chúng không được gọi một cách rõ ràng?

“JavaScript nhanh chóng ép buộc giữa nguyên thủy và đối tượng. ” — Rủi ro Kiro trong JavaScript được tinh chỉnh

Về cơ bản, việc gọi một thuộc tính chuỗi như typeof23 dẫn đến việc JavaScript tạo một đối tượng bao bọc và diễn giải mã theo cách này

Vì điều đó xảy ra tự động, nên không cần tạo một đối tượng bao bọc rõ ràng, vì nó sẽ chỉ phá vỡ typeof, như minh họa ở trên

Ảnh của Midas Hofstra trên BaptThêm một lý do nữa để không sử dụng các đối tượng bao bọc

S tương tự, các đối tượng trình bao thay đổi chức năng của các toán tử đẳng thức == và === trong JavaScript.

Và hành vi chỉ thực sự thay đổi khi từ khóa typeof25 được sử dụng với lệnh gọi trình bao bọc đối tượng, như được hiển thị trong ví dụ sau

Nói chung, các trình bao bọc chuỗi, Boolean và số sẽ được gọi tự động và các nhà phát triển JavaScript không nên gọi

Ảnh của Marcus dePaula trên BaptChờ đợi, còn đối tượng máy chủ thì sao?

H ost phụ thuộc vào việc triển khai, nghĩa là chúng được cung cấp bởi môi trường thời gian chạy cục bộ.

Nói cách khác, các đối tượng máy chủ là các đối tượng đặc biệt ngoài các đối tượng tích hợp sẵn hoặc đối tượng gốc do JavaScript cung cấp

Ví dụ: đối tượng typeof26 được cung cấp bởi nguồn cung cấp môi trường trình duyệt, trong khi một nút. môi trường js cung cấp các đối tượng máy chủ khác

Điều này có nghĩa là từ khóa typeof cũng phụ thuộc vào việc triển khai, ít nhất là trong trường hợp đối tượng máy chủ lưu trữ

Điều đó đang được nói, các triển khai hiện đại có thể sẽ trả về “đối tượng” dưới dạng đối tượng máy chủ typeof. Ví dụ

Ảnh của Hannes Wolf trên BaptCác loại tĩnh có phải là tương lai không?

Vì JavaScript là ngôn ngữ được nhập động nhưng typeof có những điểm kỳ quặc, nên một số nhà phát triển thích kiểm tra kiểu tự động hoặc tĩnh bằng cách sử dụng ngôn ngữ như TypeScript hoặc trình kiểm tra kiểu tĩnh như Flow

U sing TypeScript hoặc Flow chắc chắn có một số lợi thế và có thể ngăn ngừa lỗi, nhưng phải trả giá bằng việc học và triển khai một công cụ khác.

Mặc dù hữu ích nhưng việc sử dụng TypeScript hoặc Flow sẽ thêm một lớp phức tạp hoàn toàn mới vào chương trình JavaScript của bạn

Đối với vanilla JavaScript, thành thạo typeof là tất cả những gì bạn thực sự cần để kiểm tra các loại dữ liệu như một nhà vô địch

Ảnh của Samuel Ramos trên Bapt

kết thúc

T từ khóa typeof hữu ích cho việc kiểm tra loại trong JavaScript, nhưng nó có một số lưu ý liên quan đến các lỗi lịch sử.

Kiểm tra loại với typeof đặc biệt hữu ích đối với hầu hết các loại nguyên thủy trong JavaScript, bao gồm undefined, stringnumber

Mặt khác, typeof36, typeof37 và typeof38 là các đối tượng gốc không được phân biệt với nhau bởi typeof — tất cả chúng đều trả về typeof4 — cũng như typeof9, một cách bất ngờ [trong một lỗi nổi tiếng]

Làm cách nào để kiểm tra kiểu dữ liệu của biến trong JavaScript?

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.

Làm cách nào để kiểm tra loại dữ liệu của đối tượng trong JavaScript?

Dữ liệu không phải là đối tượng và không có bất kỳ phương thức nào. JavaScript có 7 kiểu dữ liệu nguyên thủy. chuỗi, số, bigint, boolean, không xác định, ký hiệu và null. .
"[object Object]" nếu myVar là một đối tượng
"[object Array]" nếu myVar là một mảng

Làm cách nào để kiểm tra xem một biến có phải là kiểu mảng trong JavaScript không?

isArray[] dùng để kiểm tra xem một đối tượng có phải là một mảng hay không. Mảng. Phương thức isArray[] trả về true nếu một đối tượng là một mảng, ngược lại trả về false. Ghi chú. Đối với một mảng, toán tử typeof trả về một đối tượng.

typeof trong JavaScript là gì?

Typeof trong JavaScript là toán tử dùng để kiểm tra kiểu và trả về kiểu dữ liệu của toán hạng được truyền cho nó . Toán hạng có thể là bất kỳ biến, hàm hoặc đối tượng nào có kiểu mà bạn muốn tìm hiểu bằng cách sử dụng toán tử typeof.

Chủ Đề