isFinite Fonksiyonu
isFinite fonksiyonu, bir parametrenin sonlu bir sayı olup olmadığını kontrol etmek için kullanılır
(yani bir dizi, string vs. değil ve artı veya eksi sonsuzluk değil).
Bu fonksiyon nasıl çalışır: eğer sayı artı veya eksi sonsuzluk ise
(yani Infinity)
veya sayı değilse (yani NaN)
false döndürür,
diğer durumlarda true döndürür.
Yani stringler, diziler vb. NaN'a dönüştürülecek ve buna bağlı olarak false döndürecektir.
Ancak istisnalar vardır: boş string
'' true döndürür, boşluk içeren string ' '
ayrıca true döndürür, null
true döndürür, true ve false değerleri için
ayrıca true döndürülür.
Bunun nedeni, bu değerlerin
NaN'a değil, sayılara dönüştürülmesidir.
Eğer boşluklardan oluşan bir stringi, mantıksal ve özel değerleri
sayı olarak kabul etmeyen gerçekten hassas bir sayı kontrolüne
ihtiyacınız varsa, aşağıdaki isNumeric fonksiyonunu kullanın:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Bu fonksiyonun nasıl çalıştığını anlayalım.
isFinite fonksiyonu parametreyi
bir sayıya dönüştürür ve eğer bu Infinity,
-Infinity veya NaN değilse true döndürür.
Böylece, sağ kısım açıkça sayı olmayan değerleri eler,
ancak true, false, null, boş string '' ve
boşluk stringi gibi değerleri bırakır, çünkü bunlar doğru şekilde sayılara dönüştürülür.
Bu değerleri elemek için parseFloat
fonksiyonuna ihtiyaç vardır,
bu fonksiyon true, false, null, '', ' '
için NaN döndürür. parseFloat fonksiyonu bu şekilde çalışır:
parametreyi stringe dönüştürür, yani true,
false, null, 'true', 'false',
'null' olur ve sonra içinden bir sayı okur,
bu sırada boş string ve boşluk içeren stringler
NaN verir. Ardından parseFloat sonucu,
NaN yerine true veya false elde etmek için
!isNaN ile işlenir.
Sonuç olarak, sayı-stringler ve normal sayılar dışındaki her şey elenir.
Sözdizimi
isFinite(değer);
Örnek
Şimdi isFinite true gösterecek,
çünkü parametre bir sayıdır:
let num = 3;
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
true
Örnek
Şimdi isFinite false gösterecek,
çünkü parametre bir sayı değildir:
let num = 'abcde';
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
false
Örnek
Şimdi isFinite false gösterecek,
çünkü parametre sonsuzluktur:
let num = Infinity;
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
false
Örnek
Şimdi isFinite false gösterecek,
çünkü 1/0 aslında Infinity'dir
(sonsuzluk):
let num = 1 / 0;
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
false
Örnek
Şimdi isFinite true gösterecek,
çünkü sayı olmayan boş string
bir istisnadır:
let num = '';
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
true