Hàm isFinite

Hàm isFinite dùng để kiểm tra tham số có phải là một số hữu hạn hay không (tức là không phải chuỗi, mảng, v.v. và không phải cộng hoặc trừ vô cực).

Cách hàm này hoạt động: nó sẽ trả về false, nếu số là cộng hoặc trừ vô cực (tức là Infinity) hoặc không phải số (tức là NaN), trong các trường hợp còn lại sẽ trả về true. Tức là các chuỗi, mảng, v.v. sẽ được chuyển đổi thành NaN và do đó sẽ trả về false.

Tuy nhiên có ngoại lệ: chuỗi rỗng '' trả về true, chuỗi chứa dấu cách ' ' cũng trả về true, null trả về true, đối với các giá trị true và false cũng trả về true.

Điều này xảy ra vì những giá trị này được chuyển đổi thành số, chứ không phải thành NaN. Nếu bạn cần một phép kiểm tra thực sự chính xác cho số, không coi chuỗi chỉ chứa dấu cách, giá trị logic và giá trị đặc biệt là số - hãy sử dụng hàm isNumeric sau đây:

javascriptfunction isNumeric(num) {
  return !isNaN(parseFloat(num)) && isFinite(num);
};

Hãy cùng tìm hiểu xem nó hoạt động như thế nào. Hàm isFinite chuyển đổi tham số thành số và trả về true, nếu đó không phải là Infinity, -Infinity hoặc NaN. Như vậy, phần bên phải sẽ loại bỏ những thứ rõ ràng không phải số, nhưng sẽ để lại các giá trị như true, false, null, chuỗi rỗng '' và chuỗi chứa dấu cách, vì chúng được chuyển đổi chính xác thành số.

Để loại bỏ những giá trị này, cần hàm parseFloat, hàm này đối với true, false, null, '', ' ' sẽ trả về NaN. Đó là cách hoạt động của hàm parseFloat: nó chuyển đổi tham số thành chuỗi, tức là true, false, null trở thành 'true', 'false', 'null', sau đó đọc số từ chuỗi đó, trong khi chuỗi rỗng và chuỗi chứa dấu cách cho ra NaN. Sau đó kết quả của parseFloat được xử lý bằng !isNaN, để nhận được true hoặc false thay vì NaN. Kết quả là tất cả mọi thứ đều bị loại bỏ, ngoại trừ chuỗi-số và số thông thường.

Cú pháp

javascriptisFinite(giá trị);

Ví dụ

Bây giờ isFinite sẽ xuất ra true, vì tham số là một số:

javascriptlet num = 3;
console.log(isFinite(num));

Kết quả thực thi mã:

javascripttrue

Ví dụ

Bây giờ isFinite sẽ xuất ra false, vì tham số không phải là số:

javascriptlet num = 'abcde';
console.log(isFinite(num));

Kết quả thực thi mã:

javascriptfalse

Ví dụ

Bây giờ isFinite sẽ xuất ra false, vì tham số là vô cực:

javascriptlet num = Infinity;
console.log(isFinite(num));

Kết quả thực thi mã:

javascriptfalse

Ví dụ

Bây giờ isFinite sẽ xuất ra false, vì 1/0 - về cơ bản là Infinity (vô cực):

javascriptlet num = 1 / 0;
console.log(isFinite(num));

Kết quả thực thi mã:

javascriptfalse

Ví dụ

Bây giờ isFinite sẽ xuất ra true, vì chuỗi rỗng, không phải là số, là một ngoại lệ:

javascriptlet num = '';
console.log(isFinite(num));

Kết quả thực thi mã:

javascripttrue

Xem thêm

  • hàm isNaN,
    hàm thực hiện kiểm tra NaN
  • toán tử typeof,
    toán tử xác định kiểu dữ liệu