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:
function 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
isFinite(giá trị);
Ví dụ
Bây giờ isFinite sẽ xuất ra true,
vì tham số là một số:
let num = 3;
console.log(isFinite(num));
Kết quả thực thi mã:
true
Ví dụ
Bây giờ isFinite sẽ xuất ra false,
vì tham số không phải là số:
let num = 'abcde';
console.log(isFinite(num));
Kết quả thực thi mã:
false
Ví dụ
Bây giờ isFinite sẽ xuất ra false,
vì tham số là vô cực:
let num = Infinity;
console.log(isFinite(num));
Kết quả thực thi mã:
false
Ví dụ
Bây giờ isFinite sẽ xuất ra false,
vì 1/0 - về cơ bản là Infinity
(vô cực):
let num = 1 / 0;
console.log(isFinite(num));
Kết quả thực thi mã:
false
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ệ:
let num = '';
console.log(isFinite(num));
Kết quả thực thi mã:
true