Các số là một loại nguyên thủy trong JavaScript, nhưng chỉ sử dụng typeof
sẽ không phân biệt các số với NaN hoặc Infinity
Ảnh của Alex Chambers trên Bapt
Thật rất hữu ích khi biết cách kiểm tra xem một giá trị có thuộc loại số nguyên thủy hay không, vì JavaScript là ngôn ngữ được nhập động.
Cách dễ nhất để kiểm tra một số là sử dụng typeof
, nó sẽ trả về chuỗi "number"
cho bất kỳ giá trị nào thuộc kiểu số nguyên thủy, bao gồm NaN
, Infinity
và -Infinity
Một ví dụ khi một số có thể hiển thị dưới dạng một loại khác, biểu thị một lỗi trong mã của tôi, sẽ là phân tích cú pháp đơn vị tiền tệ
Trong trường hợp này, tôi sẽ biết rằng tôi đã quên phân tích cú pháp chuỗi thành một số khi tôi nhận lại giá trị “string
” từ typeof
Ảnh của Samuel Zeller trên Bapt Bắt lỗi phân tích cú pháp
Nếu Tôi sử dụng parseFloat[]
để kiểm tra giá trị tiền tệ, nhưng tôi quên loại bỏ ký hiệu tiền tệ, tôi nhận được một phân tích cú pháp không thành công và một kết quả kỳ lạ.
Ôi không. Trong trường hợp này, có vẻ như typeof
không hoạt động như tôi mong đợi — vì giá trị typeof
0 được coi là số trong JavaScript
Ảnh của Gemma Evans trên BaptKhi từ khóa
typeof
trả về “số”Một giải pháp rõ ràng để kiểm tra kiểu nguyên thủy số là sử dụng từ khóa thetypeof
, như tôi đã trình bày ở trên.
Nhưng typeof
là một giải pháp không hoàn chỉnh, vì có hai giá trị đặc biệt trong JavaScript. typeof
4 [“Không phải là số”] và typeof
5
Đối với ví dụ về tiền tệ của tôi, tôi biết mình gặp lỗi nếu giá trị tiền tệ của tôi là typeof
0 hoặc typeof
7, nhưng typeof
trả về "number"
cho cả hai giá trị này
Có lẽ đầu vào của tôi được viết bằng ký hiệu tiền tệ và tôi chỉ cố gắng sử dụng parseFloat[]
để nắm bắt giá trị. Điều đó sẽ dẫn đến typeof
0
Ảnh của Timo Kaiser trên UnsplashMột chức năng
"number"
2 tùy chỉnhA hàm "number"
2 tùy chỉnh, mạnh mẽ sẽ sử dụng typeof
để kiểm tra loại nguyên thủy, kiểm tra giá trị "number"
5 và kiểm tra "number"
6.
Hoặc, trong trường hợp một người tự tin rằng typeof
0 và typeof
7 sẽ không xuất hiện, chỉ cần kiểm tra rằng "number"
9 là đủ
Ảnh của 🇨🇭 Claudio Schwarz. @purzlbaum trên BaptThe one-liner
Tôi thích những chiếc áo lót. Tôi nghĩ rằng chúng cần được ghi lại bằng các bình luận, nhưng tôi nghĩ chúng thực sự rất hữu ích, không chỉ là những thứ hoa mỹ.
Đây là một lớp lót về cách kiểm tra một số trong JavaScript
Tuy nhiên, có một cách tốt hơn để kiểm tra số lượng hữu hạn trong JavaScript — hàm trợ giúp NaN
0 có hành vi giống như hàm tùy chỉnh "number"
2 mà tôi đã viết. Tôi bao gồm một ví dụ trong phần tiếp theo
Ảnh của Bernard Hermant trên BaptCách dễ nhất để kiểm tra một số.
NaN
0Việc thực sự không cần thiết phải viết các hàm tùy chỉnh để kiểm tra một số, mặc dù đó là một cách hữu ích để ghi nhớ rằng các giá trị JavaScript typeof
7, NaN
4 và typeof
0 đều là .
“Phương thức
NaN
6 xác định xem giá trị được truyền có phải là một số hữu hạn hay không. ” — Tài liệu MDN
Phương thức NaN
7 sẽ trả về NaN
8 cho số hữu hạn và NaN
9 cho typeof
7, NaN
4 và typeof
0— chính xác những gì chúng ta muốn
Ngoài ra còn có hàm toàn cục Infinity
3, hàm này sẽ thực hiện ép buộc kiểu [chẳng hạn như ép buộc các chuỗi thành số], như minh họa ở trên
Tôi thảo luận sâu về các phương pháp này trong bài viết của tôi về Infinity
trong The Startup
Vô cực trong JavaScript là gì?
Infinity thực sự là một giá trị trong JavaScript, đại diện cho vô cực toán học [∞]. Hãy chuẩn bị khi nó bật lên trong…
Trung bình. com
Ảnh của Bogomil Mihaylov trên BaptKiểm tra xem một biến có phải là số nguyên không
Để kiểm tra xem biến A có phải là số nguyên hay không. Tôi có thể sử dụng toán tử đẳng thức lỏng lẻo Infinity
5 để xem liệu giá trị được phân tích cú pháp có bằng chính nó không.
Đoạn mã sau đưa ra một ví dụ về cách kiểm tra một số nguyên
Việc sử dụng typeof
sẽ phân biệt một chuỗi đang bị ép buộc thành một số với một số thực tế, giống như toán tử đẳng thức nghiêm ngặt Infinity
7
Ảnh của Markus Spiske trên BaptLột bỏ các ký hiệu tiền tệ
F hoặc một chức năng tốt hơn, mạnh mẽ hơn, trước tiên tôi có thể muốn loại bỏ các ký hiệu tiền tệ [chẳng hạn như ký hiệu đô la và bất kỳ dấu phẩy nào].
Phân tích kỹ lưỡng tiền bằng cách sử dụng các biểu thức chính quy trong JavaScript nằm ngoài phạm vi của bài viết này, nhưng mã này loại bỏ Infinity
8 và Infinity
9 trước khi phân tích cú pháp
Lưu ý rằng các hàm toàn cục -Infinity
0 và -Infinity
1 sẽ ép buộc các giá trị vào chuỗi, nếu cần và sẽ trả về typeof
0 nếu việc ép buộc không thành công
Ngoài ra còn có các chức năng -Infinity
3 và -Infinity
4, có cùng hành vi chính xác
Theo Tài liệu MDN, các chức năng trùng lặp đó đã được thêm vào ECMAScript 2015 cho “mục đích [của] mô đun hóa toàn cầu. ”
Ảnh của Toa Heftiba trên Bapt. JavaScript có thực sự có các số nguyên riêng biệt không?
N o, JavaScript chỉ có một loại số, được biểu diễn bên trong dưới dạng biểu diễn dấu phẩy động 64 bit.
Dấu phẩy động đó là kiểu dữ liệu nguyên thủy số, ngoài ra còn có một kiểu gọi là BigInt có thể được sử dụng cho các số lớn tùy ý
Các hàm toàn cục -Infinity
0 và -Infinity
1 khác nhau về những gì chúng mong đợi và sẽ xuất ra, nhưng không phải vì thực sự có các loại số nguyên và dấu phẩy động riêng biệt trong JavaScript
Ảnh của Volkan Olmez trên BaptKết luận
C việc tìm kiếm một số trong JavaScript không đặc biệt phức tạp — về cơ bản, typeof
hoạt động như bình thường, miễn là người ta biết rằng cả typeof
0 và typeof
7 đều có số typeof
.
Cách dễ nhất để kiểm tra một số hữu hạn [i. e. không phải typeof
0 hoặc typeof
7] trong JavaScript đang sử dụng NaN
0, không ép buộc các giá trị thành số hoặc toàn cầu string
4, thực hiện ép buộc kiểu
Kiểm tra một số nguyên cụ thể liên quan đến việc sử dụng hàm string
5, tiếp theo là so sánh giá trị được phân tích cú pháp với chính nó bằng cách sử dụng string
6 [sẽ nhập các giá trị không phải là số, chẳng hạn như chuỗi thành số] hoặc string
7 [sẽ chỉ trả về true nếu cả hai giá trị đều là số
Về cơ bản, số nguyên và số float đều giống nhau. JavaScript chỉ có một loại số, kiểu số nguyên thủy