0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Ngừng Sử Dụng parseInt - Tại Sao Điều Này Là Sai Lầm

Đăng vào 1 tháng trước

• 3 phút đọc

Ngừng Sử Dụng parseInt - Tại Sao Điều Này Là Sai Lầm

Bạn đã bao giờ sử dụng parseInt để cắt bớt một số trong JavaScript chưa? Tôi cũng đã từng làm như vậy. Nhưng hôm nay, tôi muốn chỉ cho bạn lý do tại sao thói quen đó có thể làm hại mã của bạn - và cách làm tốt hơn.

🧠 Vấn Đề

parseInt được thiết kế để chuyển đổi chuỗi thành số nguyên, không phải để cắt bớt số. Khi bạn viết:

javascript Copy
parseInt(4.9); // 4

Nó có hoạt động không? Có.
Nó có rõ ràng không? Không hẳn.
Nó có nhanh không? Chắc chắn là không.


⚡️ Cách Tốt Hơn

Nếu bạn đang làm việc với một số và muốn loại bỏ phần thập phân, hãy sử dụng:

javascript Copy
Math.trunc(4.9); // 4

Nó nhanh hơn, rõ ràng hơn, và có nghĩa đúng. Nó cũng hoạt động với các số âm:

javascript Copy
Math.trunc(-4.9); // -4

🧪 Tại Sao Hiệu Suất Quan Trọng

Trong các phép thử đơn giản, Math.trunc có thể nhanh hơn parseInt tới 5 lần. Điều này rất quan trọng - đặc biệt trong các vòng lặp, hoạt ảnh, hoặc tính toán theo thời gian thực.


🧨 Các Cách Khác Để Cắt Bớt Số Trong JavaScript (Sử Dụng Cẩn Thận)

Đôi khi bạn muốn cắt bớt một số mà không sử dụng Math.trunc(). Dưới đây là một số lựa chọn thay thế - mỗi phương pháp có những điểm đặc biệt riêng.

🔸 Toán Tử Bitwise OR (| 0)

Đây là một mẹo thông minh để cắt bớt số thập phân bằng cách sử dụng các phép toán bitwise.

javascript Copy
4.9 | 0;    // 4
~~4.9;      // 4

✅ Nhanh
⚠️ Chỉ hoạt động đáng tin cậy với số nguyên 32-bit. Tránh sử dụng với các số lớn hoặc chính xác.


🔸 Toán Tử Bitwise NOT Đôi (~~)

Tương tự như | 0, nhưng hơi dễ đọc hơn cho một số lập trình viên.

javascript Copy
~~4.9;    // 4
~~-4.9;   // -4

✅ Nhanh
⚠️ Có cùng hạn chế như | 0.


🔸 Math.floor() và Math.ceil()

Đây là các hàm làm tròn, không phải là cắt bớt thực sự - nhưng chúng có thể hữu ích tùy thuộc vào dấu của số.

javascript Copy
Math.floor(4.9);   // 4
Math.floor(-4.9);  // -5
Math.ceil(4.9);    // 5
Math.ceil(-4.9);   // -4

✅ Ý định rõ ràng
⚠️ Không phải là cắt bớt - chúng làm tròn lên/xuống.


🔸 Number.toFixed(0)

Phương pháp này trả về một chuỗi, không phải là số, và nó làm tròn giá trị.

javascript Copy
(4.9).toFixed(0);   // "5"
Number((4.9).toFixed(0)); // 5

✅ Hữu ích cho định dạng
⚠️ Không phải là cắt bớt, và trả về chuỗi trừ khi được chuyển đổi.


📊 Khuyến Nghị

Phương Pháp Cắt Bớt? Trả Về Hiệu Suất Ghi Chú
Math.trunc() Số 🔼 Cao Lựa chọn tốt nhất cho sự rõ ràng và an toàn
parseInt() Số 🔽 Thấp Tránh sử dụng để cắt bớt số
Math.floor() Số 🔼 Cao Làm tròn xuống, không phải cắt bớt
Math.ceil() Số 🔼 Cao Làm tròn lên, không phải cắt bớt
toFixed(0) Chuỗi 🔽 Trung Bình Làm tròn và trả về chuỗi trừ khi được chuyển đổi

✅ Tại Sao Thực Hành Tốt Quan Trọng

Là một lập trình viên, bạn không chỉ viết mã cho máy móc - bạn đang viết cho những con người khác, bao gồm cả bản thân bạn sau này. Chọn công cụ đúng đắn giúp mã của bạn:

  • Dễ đọc hơn
  • Chạy nhanh hơn
  • Ý nghĩa hơn

💬 Kết Luận

Nếu bạn đang cắt bớt số bằng parseInt, hãy dừng lại ngay. Sử dụng Math.trunc và viết mã có ý nghĩa. Những lựa chọn nhỏ dẫn đến thói quen tốt hơn - và phần mềm tốt hơn.


Thích mẹo này? Chia sẻ nó với một người bạn vẫn đang mắc kẹt trong thế giới parseInt. Hãy làm đúng những điều cơ bản - rồi chúng ta có thể làm những điều kỳ diệu. 😉

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào