Cái nào tốt hơn parseInt hoặc số trong JavaScript?

Hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 phân tích đối số đầu vào chuỗi của hàm và trả về kết quả là một giá trị số nguyên. Nếu không được thì hàm trả về NaN. Trong cuộc sống, chúng ta thường sử dụng các giá trị với đơn vị nhất định, chẳng hạn như "$10". Để nhận giá trị số của các dòng như vậy ta có thể sử dụng hàm
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2

Cú pháp và tham số

Cú pháp của hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2.  

parseInt(string)
parseInt(string, radix)

Giá trị

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
5 - chuỗi đầu vào được chuyển đổi thành giá trị số nguyên (bắt buộc)

Giá trị

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
6 - cũng là đối số số nguyên cho biết cơ sở của hệ thống số của số được phân tích trong chuỗi, cho phép giá trị từ 2 đến 36 (tùy chọn, giá trị mặc định là 10). Nói chung, tốt hơn là chỉ định lập luận này. Nếu không, chúng tôi có thể gặp thêm lỗi trong chương trình

Nếu đối số này không có hoặc bằng 0, giá trị chuỗi có thể được phân tích cú pháp theo các cách sau

  1. Nếu các ký tự đầu tiên của chuỗi "0x" hoặc "0X", thì nó được phân tích cú pháp dưới dạng số thập lục phân

  2. Nếu ký tự đầu tiên của chuỗi là "0", thì nó được phân tích thành một số bát phân. Điều đáng nói là ngày nay không phải tất cả các trình duyệt đều coi số được phân tích cú pháp là số bát phân. Một số chuỗi, ngay cả khi chúng bắt đầu bằng "0", được phân tích cú pháp dưới dạng số thập phân

  3. Nếu chuỗi bắt đầu bằng một chữ số khác "0", thì nó được phân tích cú pháp dưới dạng số thập phân

Ở phần cuối của bài viết này, chúng ta sẽ xem xét những đối số nào có thể được cung cấp cho hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 và những loại số tồn tại nói chung và có bao nhiêu cách bạn có thể viết cùng một số

Giá trị trả về

Thứ nhất, hàm này có thể trả về một số nguyên nếu mọi thứ đều ổn. Thứ hai, kết quả của hàm có thể là

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
8 trong trường hợp không thể chuyển đổi ký tự đầu tiên không phải khoảng trắng sang kiểu số hoặc trong trường hợp cơ số không vừa trong phạm vi từ 2 đến 36 (mô đun 2 ** 32 nhỏ hơn 2 trở lên

Ví dụ nếu cơ số bằng 10 thì kết quả hàm sẽ cho ra số thập phân, nếu cơ số bằng 16 thì ta sẽ có hệ thập lục phân, v.v. Ngoài ra, nếu cơ số lớn hơn 10, tất cả các số sau chín được biểu thị bằng các chữ cái trong bảng chữ cái Latinh. Ví dụ, từ A đến F được sử dụng cho các số thập lục phân (cơ số 16)

Đôi khi một phần của chuỗi đầu vào có thể được chuyển đổi bằng hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 trong khi phần còn lại của chuỗi này không thể được chuyển đổi. Vì vậy nếu từ bắt đầu bằng các ký tự không thể spoil được thì ngay lập tức ta nhận được kết quả
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
8 và hàm sẽ dừng chạy

Nhưng nếu trong quá trình chuyển đổi,

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 phát hiện một số không phải là chữ số trong hệ thống số dựa trên cơ số, chẳng hạn như G trong hệ thống 16 chữ số hoặc A trong hệ thống thập phân, thì quá trình chuyển đổi sẽ kết thúc ngay lập tức và trả về giá trị thu được từ

Các tính năng của chức năng

Thực tế quan trọng là hàm cho phép sử dụng khoảng trắng ở đầu và cuối chuỗi đầu vào. Ngoài ra

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 làm tròn số phân số vì trong công việc nó dừng lại ở phần thập phân

Chúng ta đã biết rằng một số số chứa ký tự E trong biểu diễn chuỗi của chúng (12. 04E21 cho 12. 04×10^21). Trong trường hợp này, sử dụng

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 để giảm số có thể dẫn đến kết quả không mong muốn khi sử dụng cho số rất lớn hoặc rất nhỏ. Do đó, bạn không nên sử dụng
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 để thay thế cho hàm
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
45. Kết quả là chỉ số nguyên đầu tiên được tìm thấy được trả về

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 hiểu hai dấu hiệu. "+" cho số dương và "-" cho số âm. Chà, trước tiên, hàm
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 loại bỏ các khoảng trắng trong tham số và ngay lập tức xem liệu các ký tự này có xuất hiện hay không.  

Nếu không tìm thấy các ký tự này, thuật toán hàm sẽ chuyển sang bước tiếp theo. Ngược lại, nếu có ký tự này, hàm sẽ loại bỏ ký tự đó và tiếp tục phân tích cú pháp các số cho phần còn lại của chuỗi

ví dụ

Cuối cùng, hãy xem các ví dụ về ứng dụng của hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 trong đó chúng ta sẽ không chỉ định rõ ràng tham số thứ hai

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");

Kết quả là trong tất cả các trường hợp trước, chúng tôi nhận được số "30".  

Với ví dụ đầu tiên sẽ không có câu hỏi. Trong ví dụ 2 và 3, chức năng không nhận ra ". ". Vì vậy, kết quả là hiển thị mọi thứ ở bên trái của dấu hiệu này

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
4

Trong trường hợp này, kết quả là chúng tôi cũng sẽ "30". Chúng tôi đã đề cập rằng chức năng này cho phép chúng tôi sử dụng khoảng trắng ở đầu và cuối dòng đầu vào và tự xử lý chúng.  

Tuy nhiên, nếu khoảng trắng nằm trong chuỗi, hàm không nhận ra chúng. Do đó, kết quả của dòng tiếp theo, chúng tôi nhận được số 30

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
0

Trong các trường hợp sau, chuỗi bắt đầu bằng một ký tự không thể chuyển đổi thành giá trị số. Như vậy, ta sẽ có kết quả

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
8

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2

Chà, hãy chuyển sang các ví dụ trong đó tham số thứ hai được đặt rõ ràng.  

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
3

Tóm lại, nếu bạn hiểu các hệ thống số khác nhau, bạn sẽ dễ dàng hiểu kết quả của các ví dụ sau (trong mỗi ví dụ tiếp theo, nó bằng 15)

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
4

Các ví dụ sau đều trả về -15

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
5

hệ thống số

Chúng ta đã học một chút về cách viết một số. Ví dụ: nếu vé có giá 200 đô la, chúng ta có thể nói

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
6

Điều này áp dụng cho tham số đầu tiên của hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2

Ngoài ra, khi nghiên cứu các tham số của hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 chúng ta đã nói rằng
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
6 là một đối số nguyên biểu thị cơ sở hệ thống số của số được phân tích trong chuỗi.  

Vậy hệ thống số và các biến thể của nó là gì? . Trong cuộc sống thực, chúng ta đã quen với hệ thống số thập phân và chúng ta sử dụng nó nhiều nhất. Đây là ký hiệu thông thường đối với chúng tôi về các số mà chúng tôi đã học ở trường. Hệ thống thập phân sử dụng 10 chữ số khác nhau (0 1 2 3 4 5 6 7 8 9). Với sự trợ giúp của những con số này, chúng ta có thể viết các số có nhiều chữ số (25, 365, 1000500).  

Một loại hệ thống số rất phổ biến và nổi tiếng khác là hệ thống số nhị phân. Chỉ có hai ký tự được sử dụng trong hệ thống này (0 và 1). Một hệ thống nổi tiếng khác là hệ thập lục phân trong đó 16 ký tự được sử dụng (0 1 2 3 4 5 6 7 8 9 A B C D E F). Ngoài ra còn có các hệ thống số khác (bát phân, thập lục phân, v.v.). ). Nhưng chúng ta hãy xem xét kỹ hơn về hệ thống số nhị phân

hệ thống số nhị phân

Hệ thống số nhị phân được sử dụng trong máy tính hoặc các thiết bị điện tử khác, lập trình, toán học. Điều này khá thuận tiện vì chỉ sử dụng 2 ký tự. Hãy đếm đến 16 trong hệ thống nhị phân.  

0 -

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
03     8 -
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
04

1 -

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
05       9 -
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
06

2 -

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
07     10 -
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
08

3 -

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
09     11 -
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
20

4 -

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
21     12 -
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
22

5 -

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
23       13 -
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
24

6 -

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
25     14 -
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
26

7 -

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
27     15 -
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
28

Sự tương ứng của các con số này có thể được ghi nhớ một cách đơn giản. Đối với các số phức tạp hơn, có các phương pháp chuyển số từ hệ thống này sang hệ thống khác. Phương pháp này liên quan đến việc chia một số cho hai lần mỗi lần (từ hệ thống số thập phân sang hệ nhị phân) và tìm kiếm lũy thừa của hai (từ hệ thống số nhị phân sang hệ thập phân)

Trong JavaScript, chúng ta có thể sử dụng hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 mà chúng ta đã nói để chuyển đổi một số từ hệ thống này sang hệ thống khác.  

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
7

Thật đơn giản để chuyển đổi một số từ thập phân sang nhị phân. Nhưng theo thứ tự ngược lại có một số khó khăn. Nếu chuỗi đầu vào bắt đầu bằng ký hiệu '0' hoặc '1', thì chuỗi này được phân tích cú pháp dưới dạng số bát phân hoặc số thập phân, chứ không phải dưới dạng nhị phân. Vì vậy, nếu bạn cần chuyển đổi một chuỗi từ nhị phân sang thập phân, có thể, bạn sẽ cần viết thêm một hàm để có thể nhận dạng chuỗi nhị phân đầu vào

BigInt

Vài lời về

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
30. Nó là đối tượng để khai báo các số rất lớn (253 - 1). Ví dụ: nếu chúng ta có trong chuỗi đầu vào một số lớn như 1234567890123456789, kết quả của hàm
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 sẽ là gì?

Chà, khi

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 chuyển đổi giá trị BigInt thành giá trị Số, hàm này có thể mất độ chính xác. Kết quả có thể không chính xác. Lý do cho điều này là loại bỏ các giá trị không phải là số ở cuối ('n')

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
0

parseInt() so với Number()

Cuối cùng nhưng không kém phần quan trọng, về hàm so sánh

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 và
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
34. Bạn thường có thể nghe câu hỏi về chức năng nào tốt hơn, tiện lợi hơn khi sử dụng và chúng khác nhau như thế nào

Hàm

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
34 chỉ có thể chuyển đổi loại từ loại này sang loại khác nhưng
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 có thể phân tích cú pháp giá trị của chuỗi đầu vào và sau đó chuyển đổi nó. Trong khi hàm
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
34 sẽ cố gắng chuyển đổi tất cả các chuỗi đầu vào, thì hàm
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 sẽ chuyển từng bước nếu nó không đáp ứng các ký tự số

Trong trường hợp có lỗi

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
34 sẽ cho ra kết quả sai hoàn toàn.
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 sẽ in một số mà chức năng quản lý để nhận ra trước một dấu hiệu không được nhận dạng. Và nếu chúng ta truyền các tham số giống nhau trong cả hai hàm, chúng ta có thể nhận được các kết quả khác nhau

Ví dụ: nếu chuỗi đầu vào cho

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
2 sẽ là
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
42 hoặc
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
43 thì kết quả sẽ là
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
8. trong trường hợp hàm
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
34, kết quả sẽ là
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
46 và
parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
47 theo quy định. Và một ví dụ nữa để cuối cùng hiểu

parseInt("30");
parseInt("30.00");
parseInt("30.33");
parseInt("+30");
parseInt("-30");
parseInt("030");
parseInt("30 years");
1

Tóm lại, mặc dù hai chức năng này thực sự giống nhau, nhưng chúng thực hiện một công việc hơi khác, vì vậy chúng cần được sử dụng riêng lẻ

Sử dụng parseInt hay đánh số JavaScript tốt hơn?

Ví dụ: nếu bạn muốn chuyển đổi một chuỗi có pixel thành một số, chẳng hạn như 32px thành 32 , thì bạn nên sử dụng parseInt , nhưng hầu hết thời gian bạn nên sử dụng . Hoặc thậm chí nếu bạn muốn chuyển đổi một số từ hệ thống thập phân sang hệ thống khác. . Or even if you want to convert a number from a decimal system to something else.

Tại sao không sử dụng parseInt?

Do đó, để chuyển đổi một số giá trị không phải là số thành số, chúng ta phải luôn sử dụng hàm Number(). ví dụ. Có nhiều trường hợp góc khác nhau đối với các hàm parseInt() khi nó thực hiện chuyển đổi redix, do đó chúng ta nên tránh sử dụng hàm parseInt() cho mục đích ép buộc. Lưu câu trả lời này

Khi nào nên sử dụng parseInt trong JavaScript?

Hàm parseInt() được sử dụng để chấp nhận tham số chuỗi, cơ số và chuyển đổi nó thành số nguyên . Tham số cơ số được sử dụng để chỉ định hệ thống số nào sẽ được sử dụng, ví dụ: cơ số 16 (thập lục phân) cho biết rằng số trong chuỗi phải được phân tích cú pháp từ số thập lục phân thành số thập phân.

Tôi có thể sử dụng cái gì thay cho parseInt trong JavaScript?

3 - Các lựa chọn thay thế cho phương thức parseInt .
3. 1 - Hàm Number. Hàm Number cũng có thể được sử dụng để chuyển đổi một chuỗi thành một số. .
3. 2 - Nhân với một chuỗi số 1 và làm tròn để phân tích thành một số nguyên. .
3. 3 - Phương thức valueOf của Object. .
3. 4 - Phương thức parseFloat