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:
javascriptfunction 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
javascriptisFinite(değer);
Örnek
Şimdi isFinite true gösterecek,
çünkü parametre bir sayıdır:
javascriptlet num = 3;
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
javascripttrue
Örnek
Şimdi isFinite false gösterecek,
çünkü parametre bir sayı değildir:
javascriptlet num = 'abcde';
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
javascriptfalse
Örnek
Şimdi isFinite false gösterecek,
çünkü parametre sonsuzluktur:
javascriptlet num = Infinity;
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
javascriptfalse
Örnek
Şimdi isFinite false gösterecek,
çünkü 1/0 aslında Infinity'dir
(sonsuzluk):
javascriptlet num = 1 / 0;
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
javascriptfalse
Örnek
Şimdi isFinite true gösterecek,
çünkü sayı olmayan boş string
bir istisnadır:
javascriptlet num = '';
console.log(isFinite(num));
Kodun çalıştırılmasının sonucu:
javascripttrue