Hàm isFinite() trong JavaScript
Bùi Tấn Lực
- 922
- 07/09/2025
Chức năng của Hàm isFinite() trong JavaScript
Hàm isFinite() trong JavaScript dùng để kiểm tra giá trị truyền vào có phải là số hay không, nó chuyển đổi trước giá trị đó thành số rồi mới kiểm tra, nếu giá trị chuyển đổi thành số được thì trả về true, nếu giá trị không chuyển thành số được sẽ trả về false.
Cú pháp của Hàm isFinite() trong JavaScript
isFinite(giatri);
giatri: Giá trị truyền vào sẽ được chuyển đổi thành số, nếu chuyển đổi được thành số thì trả về true, ngược lại trả về false (Ví dụ: 35, -35, null, "35",....)
Code Hàm isFinite() trong JavaScript
isFinite(35);
<script>
document.write(isFinite(35)+"<br>"); // Kết quả: true
document.write(isFinite(-35)+"<br>"); // Kết quả: true
document.write(isFinite(0)+"<br>"); // Kết quả: true
document.write(isFinite("35")+"<br>"); // Kết quả: true
document.write(isFinite(null)+"<br>"); // Kết quả: true (null biến thành số 0)
document.write(isFinite("35abc")+"<br>"); // Kết quả: false
document.write(isFinite("abc")+"<br>"); // Kết quả: false
</script>
Kết quả:
true
true
true
true
true
false
false
So sánh hàm isFinite() và phương thức tĩnh Number.isFinite()
Hàm isFinite(value): chuyển đổi giá trị truyền vào thành số trước rồi mới kiểm tra.
Phương thức tĩnh Number.isFinite(value): Nó kiểm tra giá trị truyền vào có phải là số hay không chứ không thực hiện chuyển đổi.
Những trường hợp cần lưu ý khi sử dụng hàm isFinite() trong JavaScript
Điểm cần chú ý nhất khi sử dụng isFinite() là hàm không kiểm tra trực tiếp kiểu dữ liệu ban đầu. Giá trị truyền vào có thể được JavaScript chuyển đổi sang kiểu số trước khi đưa vào quá trình kiểm tra. Vì vậy, một số giá trị không phải kiểu number vẫn có thể nhận kết quả true.
isFinite() xử lý chuỗi chứa số như thế nào?
Khi nhận một chuỗi biểu diễn được một số hợp lệ, isFinite() sẽ chuyển chuỗi đó thành số rồi kiểm tra. Chẳng hạn, chuỗi "125" được chuyển thành số 125 nên kết quả là true. Ngược lại, chuỗi chứa thêm ký tự không phù hợp như "125abc" không thể chuyển thành một số hợp lệ nên kết quả là false.
<script>
document.write(isFinite("125") + "<br>");
document.write(isFinite("125abc") + "<br>");
document.write(isFinite("abc") + "<br>");
</script>
Kết quả lần lượt là true, false và false. Điều này cho thấy cần phân biệt giữa một giá trị có thể chuyển thành số và một giá trị vốn đã thuộc kiểu number.
isFinite() xử lý null, boolean và chuỗi rỗng ra sao?
Một số giá trị đặc biệt cũng được JavaScript chuyển đổi trước khi isFinite() kiểm tra. null được chuyển thành 0, giá trị true thành 1, false thành 0, còn chuỗi rỗng được chuyển thành 0. Vì vậy, các trường hợp này đều có thể trả về true.
<script>
document.write(isFinite(null) + "<br>");
document.write(isFinite(true) + "<br>");
document.write(isFinite(false) + "<br>");
document.write(isFinite("") + "<br>");
</script>
Đây là nguyên nhân dễ gây bất ngờ nếu bạn chỉ muốn xác nhận giá trị đầu vào thực sự là một số. Khi dữ liệu đến từ biểu mẫu, API hoặc nguồn bên ngoài, không nên dựa vào isFinite() mà bỏ qua kiểu dữ liệu ban đầu.
Khi nào nên dùng isFinite() thay vì Number.isFinite()?
Hãy dùng isFinite() khi bạn chủ động muốn JavaScript thực hiện chuyển đổi giá trị sang số trước khi kiểm tra. Cách này phù hợp với những tình huống dữ liệu đầu vào có thể là chuỗi số và bạn chấp nhận quá trình chuyển đổi đó.
Nếu yêu cầu là giá trị phải thuộc kiểu number và đồng thời phải là một số hữu hạn, Number.isFinite() sẽ phù hợp hơn vì phương thức này không tự động chuyển đổi kiểu dữ liệu. Việc lựa chọn đúng cách kiểm tra giúp tránh trường hợp dữ liệu như chuỗi số, null hoặc giá trị Boolean vô tình được xem là số hợp lệ.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm isFinite() trong JavaScript.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *