Fungsi isFinite
Fungsi isFinite untuk memeriksa parameter
pada apakah ia merupakan angka terbatas (yaitu
bukan string, array, dll. dan bukan plus
atau minus tak terhingga).
Cara kerja fungsi ini: ia akan mengembalikan false,
jika angka tersebut adalah plus atau minus tak terhingga
(yaitu Infinity)
atau bukan angka (yaitu NaN),
dalam kasus lainnya akan mengembalikan true.
Artinya, string, array, dll. akan dikonversi
menjadi NaN dan karenanya akan mengembalikan false.
Namun ada pengecualian: string kosong
'' mengembalikan true, string dengan spasi ' '
juga mengembalikan true, null
mengembalikan true, untuk nilai true dan false
juga dikembalikan true.
Ini terjadi karena nilai-nilai tersebut
dikonversi menjadi angka, bukan menjadi NaN.
Jika Anda memerlukan pemeriksaan yang benar-benar tepat
untuk angka, yang tidak menganggap angka string
yang terdiri dari spasi, nilai boolean dan nilai khusus
- gunakan fungsi isNumeric berikut:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Mari kita pahami cara kerjanya.
Fungsi isFinite mengonversi parameter
menjadi angka dan mengembalikan true, jika ini bukan Infinity,
-Infinity atau NaN.
Dengan demikian, bagian kanan akan menyaring
bukan-angka yang jelas, tetapi akan membiarkan nilai-nilai
seperti true, false, null, string kosong '' dan
string dengan spasi, karena mereka dikonversi dengan benar
menjadi angka.
Untuk menyaring nilai-nilai ini, diperlukan fungsi
parseFloat,
yang untuk true, false, null, '', ' '
akan mengembalikan NaN. Begitulah cara kerja fungsi parseFloat: ia
mengonversi parameter menjadi string, yaitu true,
false, null menjadi 'true', 'false',
'null', dan kemudian membaca angka darinya,
sementara itu string kosong dan string dengan spasi
menghasilkan NaN. Kemudian hasil parseFloat diproses
dengan !isNaN,
untuk mendapatkan true atau false sebagai ganti NaN.
Hasilnya, semua disaring kecuali string-angka
dan angka biasa.
Sintaksis
isFinite(nilai);
Contoh
Sekarang isFinite akan menampilkan true,
karena parameternya adalah angka:
let num = 3;
console.log(isFinite(num));
Hasil eksekusi kode:
true
Contoh
Sekarang isFinite akan menampilkan false,
karena parameternya bukan angka:
let num = 'abcde';
console.log(isFinite(num));
Hasil eksekusi kode:
false
Contoh
Sekarang isFinite akan menampilkan false,
karena parameternya adalah tak terhingga:
let num = Infinity;
console.log(isFinite(num));
Hasil eksekusi kode:
false
Contoh
Sekarang isFinite akan menampilkan false,
karena 1/0 - ini pada dasarnya adalah Infinity
(tak terhingga):
let num = 1 / 0;
console.log(isFinite(num));
Hasil eksekusi kode:
false
Contoh
Sekarang isFinite akan menampilkan true,
karena string kosong, yang bukan angka,
- adalah pengecualian:
let num = '';
console.log(isFinite(num));
Hasil eksekusi kode:
true