Sử dụng parseInt hay đánh số JavaScript tốt hơn?
Show // type conversion Number("20px"); // NaN Number("2e1"); // 20, exponential notation // parsing: parseInt("20px"); // 20 parseInt("10100", 2); // 20 parseInt("2e1"); // 2 Hãy nhớ rằng cả _____ 126 _______ và _______ 127_______ đều bỏ qua số 0 đứng đầu trên chuỗi, nó sẽ phân tích cú pháp số ở dạng cơ số thập phân, đây là tiêu chuẩn trên ECMAScript 5. Ngoài ra, Mặc dù Number và parseInt có thể trông giống nhau, nhưng có một số khác biệt lớn có thể dẫn đến nhầm lẫn và lỗi. Trong bài viết này, chúng tôi sẽ xem xét sự khác biệt và giải thích từng cái một Trước hết, hãy lưu ý rằng parseInt được sử dụng để phân tích các giá trị chuỗi thành số nguyên với cơ số đã cho. Tham số thứ hai là tùy chọn. Tuy nhiên, đó là một thói quen xấu nếu không sử dụng nó… Hàm 1 phân tích cú pháp một đối số chuỗi và trả về một số nguyên của cơ số đã chỉ định (cơ số trong các hệ thống số toán học)
2Một chuỗi bắt đầu bằng một số nguyên. Khoảng trắng hàng đầu trong đối số này bị bỏ qua 3 Tùy chọnMột số nguyên giữa 4 và 5 đại diện cho cơ số (cơ số trong hệ thống số toán học) của 2. Nó được chuyển đổi thành ; . Nếu 8 hoặc không được cung cấp, cơ số sẽ được suy ra dựa trên giá trị của 2. Hãy cẩn thận — điều này KHÔNG phải lúc nào cũng được mặc định là 0. Phần giải thích chi tiết hơn điều gì sẽ xảy ra khi không cung cấp 3Một số nguyên được phân tích cú pháp từ 2 đã cho hoặc 7 khi
Ghi chú. JavaScript không có sự phân biệt "số dấu phẩy động" và "số nguyên" ở cấp độ ngôn ngữ. 1 và 8 chỉ khác nhau về hành vi phân tích cú pháp, nhưng không nhất thiết là giá trị trả về của chúng. Ví dụ: 9 và 0 sẽ trả về cùng một giá trị. một 1 42Hàm 2 , phân tích cú pháp chuỗi đó, sau đó trả về một số nguyên hoặc 7Nếu không phải là 7, giá trị trả về sẽ là số nguyên là đối số đầu tiên được lấy làm số trong 3 đã chỉ định. (Ví dụ: 3 của 0 chuyển đổi từ số thập phân, 8 chuyển đổi từ bát phân, 9 từ thập lục phân, v.v. )Đối số 3 là. Nếu nó không được cung cấp hoặc nếu giá trị trở thành 0, 7 hoặc 2 ( 3 bị ép buộc thành 7), JavaScript sẽ giả định như sau
Ghi chú. Các tiền tố khác như 4, hợp lệ trong , được coi là chữ số bình thường trước 1. 1 cũng không coi các chuỗi bắt đầu bằng ký tự 8 là giá trị bát phân. Tiền tố duy nhất mà 1 nhận ra là 8 hoặc 9 cho các giá trị thập lục phân — mọi thứ khác được phân tích cú pháp dưới dạng giá trị thập phân nếu thiếu 3Nếu cơ số là 9, thì 1 cho phép chuỗi được tùy ý thêm tiền tố bởi 8 hoặc 9 sau ký tự dấu tùy chọn ( 6/ 7)Nếu giá trị cơ số (bắt buộc nếu cần) không nằm trong phạm vi [2, 36] (bao gồm) 2 trả về 7Đối với các cơ số trên 0, các chữ cái trong bảng chữ cái tiếng Anh biểu thị các chữ số lớn hơn 1. Ví dụ: đối với các số thập lục phân (cơ sở ____21_______9), ____62_______3 đến ____62_______4 được sử dụng. Các chữ cái không phân biệt chữ hoa chữ thường 2 hiểu chính xác hai biển báo. 6 cho tích cực và 7 cho tiêu cực. Nó được thực hiện như một bước đầu tiên trong phân tích cú pháp sau khi khoảng trắng bị xóa. Nếu không tìm thấy dấu hiệu nào, thuật toán chuyển sang bước tiếp theo; Nếu 2 gặp một ký tự không phải là một số trong 3 đã chỉ định, nó sẽ bỏ qua nó và tất cả các ký tự tiếp theo và trả về giá trị số nguyên được phân tích cú pháp cho đến thời điểm đó. Ví dụ: mặc dù về mặt kỹ thuật, 0 mã hóa một số nguyên (và sẽ được phân tích cú pháp chính xác thành số nguyên 1 bởi 8), nhưng 3 trả về 4, vì 5 không phải là một số hợp lệ trong cơ số 10. Vì 6 cũng không phải là số nên giá trị trả về sẽ luôn là số nguyênNếu ký tự đầu tiên không thể được chuyển đổi thành một số với cơ số đang được sử dụng, thì 2 trả về 7. Khoảng trắng hàng đầu được cho phépĐối với mục đích số học, giá trị 7 không phải là một số trong bất kỳ cơ số nào. Bạn có thể gọi hàm 0 để xác định xem kết quả của 2 có phải là 7 hay không. Nếu 7 được chuyển sang phép toán số học, kết quả phép toán cũng sẽ là 7Bởi vì các số lớn sử dụng ký tự 5 trong biểu diễn chuỗi của chúng (e. g. 6 cho 6. 022 × 1023), sử dụng 2 để cắt bớt các số sẽ tạo ra kết quả không mong muốn khi sử dụng trên các số rất lớn hoặc rất nhỏ. 2 không nên được sử dụng để thay thế cho 9Để chuyển đổi một số thành chuỗi ký tự của nó trong một cơ số cụ thể, hãy sử dụng 00Bởi vì 1 trả về một số, nó có thể bị mất độ chính xác nếu số nguyên được biểu thị bằng chuỗi nằm ngoài phạm vi an toàn. Hàm 02 hỗ trợ phân tích cú pháp các số nguyên có độ dài tùy ý một cách chính xác, bằng cách trả về một giá trị 03Tất cả các ví dụ sau đều trả về 04
Tất cả các ví dụ sau đều trả về 7
Tất cả các ví dụ sau đều trả về 06
Ví dụ sau trả về 07
1 không xử lý các giá trị 03. Nó dừng ở ký tự 10 và coi chuỗi trước đó là một số nguyên bình thường, có thể mất độ chính xác
Thay vào đó, bạn nên chuyển chuỗi tới hàm 02, không có ký tự 10 ở cuối
2 không hoạt động với
1 có thể có kết quả thú vị khi làm việc trên các chuỗi không kết hợp với cơ số cao;
Nói chung, không nên sử dụng 1 trên các chuỗi không phải chuỗi, đặc biệt là sử dụng nó thay thế cho 9. Nó có thể hoạt động trên số lượng nhỏ
Tuy nhiên, nó chỉ hoạt động vì biểu diễn chuỗi của các số này sử dụng ký hiệu phân số cơ bản ( 18, 19), trong đó 1 dừng ở dấu thập phân. Các số lớn hơn hoặc bằng 1e+21 hoặc nhỏ hơn hoặc bằng 1e-7 sử dụng ký hiệu hàm mũ ( 21, 22) trong biểu diễn chuỗi của chúng và 1 sẽ dừng ở ký tự 5 hoặc dấu thập phân, luôn xuất hiện sau chữ số đầu tiên. Điều này có nghĩa là đối với số lớn và số nhỏ, 1 sẽ trả về số nguyên có một chữ số
Tôi có nên sử dụng số hoặc parseInt JavaScript không?Number() chuyển đổi loại trong khi parseInt phân tích giá trị của đầu vào . Như bạn thấy, parseInt sẽ phân tích tới ký tự không có chữ số đầu tiên. Mặt khác, Number sẽ cố gắng chuyển đổi toàn bộ chuỗi.
Bạn có nên sử dụng parseInt không?Có nhiều trường hợp 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.
Tại sao parseInt không được sử dụng thường xuyên hơn trong JavaScript?parseInt() không phải lúc nào cũng chuyển đổi chính xác thành số nguyên
. Số nguyên là số dấu phẩy động không có phân số. Chuyển đổi một số n thành một số nguyên có nghĩa là tìm số nguyên “gần nhất” với n (trong đó “gần nhất” là vấn đề định nghĩa). all numbers are floating point. Integers are floating point numbers without a fraction. Converting a number n to an integer means finding the integer that is “closest” to n (where “closest” is a matter of definition).
Khi nào nên sử dụng parseInt trong JavaScript?Mô tả. Hàm parseInt chuyển đổi đối số đầu tiên của nó thành một chuỗi, phân tích cú pháp chuỗi đó, sau đó trả về một số nguyên hoặc NaN . Nếu không phải là NaN , giá trị trả về sẽ là số nguyên là đối số đầu tiên được lấy dưới dạng một số trong cơ số đã chỉ định. |