Bir ara JavaScript'lee uğraşırken bu fonksiyon yüzünden çıldıracaktım. İngilizce kaynakları okuduktan sonra Türkçesiyle de karşılaşınca olayın iç yüzünü paylaşayım istedim. Aynen alıntılıyorum:
JavaScript parseInt() fonksiyonunu nasıl bilirdiniz? Parametre olarak aldığı değerden bir tam sayı ortaya çıkartmaya çalışan güzide bir JavaScript fonksiyonu olan parseInt() geçen gün beni hayretler içerisinde bıraktı. Buyrun başıma geleni kendiniz görün. (Firebug kullananlar direkt console'da kodları çalıştırabilirler.)
Durumu bilenler hınzırca gülümsemiş olabilirler amma velakin bilmeyenler eminim benim gibi ufak bir şaşkınlık geçirmişlerdir. İlk aklıma gelen soru "Acaba fonksiyonda bir bug mı var?" sorusu oldu. Ufak bir araştırma konu hakkındaki cehaletimi ortaya koydu. Kısaca:
Efendim bu parseInt() fonksiyonu iki parametre ile çalışabilen bir fonksiyonmuş. İkinci parametre seçime bağlı olarak kullanılabiliyormuş ve fakat kullanılmadığında varsayılan bir değer atanmıyormuş. Şöyle ki;
parseInt fonksiyonu ikinci parametre olarak işlem yapacağı sayı düzenini alabiliyor. Yani fonksiyonu şu şekilde çalıştırırsak istediğimiz sonuca ulaşabiliriz.
Çalışma anında bu tip problemlerin ortaya çıkmasının önüne geçmek için her zaman parseInt fonksiyonuna sayı düzenini ikinci parametre olarak geçmenizi tavsiye ederim.
Alıntı: http://www.karalamalar.net/javascript-parseint-basinizi-agritmasin/
JavaScript parseInt() fonksiyonunu nasıl bilirdiniz? Parametre olarak aldığı değerden bir tam sayı ortaya çıkartmaya çalışan güzide bir JavaScript fonksiyonu olan parseInt() geçen gün beni hayretler içerisinde bıraktı. Buyrun başıma geleni kendiniz görün. (Firebug kullananlar direkt console'da kodları çalıştırabilirler.)
parseInt('06'); // 6
parseInt('07'); // 7
parseInt('08'); // 0
parseInt('09'); // 0
Durumu bilenler hınzırca gülümsemiş olabilirler amma velakin bilmeyenler eminim benim gibi ufak bir şaşkınlık geçirmişlerdir. İlk aklıma gelen soru "Acaba fonksiyonda bir bug mı var?" sorusu oldu. Ufak bir araştırma konu hakkındaki cehaletimi ortaya koydu. Kısaca:
It's not a bug, it's a feature! (Bu bir hata değil bir özelliktir.)
Efendim bu parseInt() fonksiyonu iki parametre ile çalışabilen bir fonksiyonmuş. İkinci parametre seçime bağlı olarak kullanılabiliyormuş ve fakat kullanılmadığında varsayılan bir değer atanmıyormuş. Şöyle ki;
- Eğer işlenecek parametre "0x" ile başlıyorsa, fonksiyon parametrenin 16'lık düzende bir sayı olduğunu varsayıp ona göre davranıyor.
- Eğer işlenecek parametre "0" ile başlıyorsa bu durumda da fonksiyon parametrenin 8'lik düzende bir sayı olduğunu varsayarak ona göre davranıyor.
- İlk iki durum geçerli değilse bu durumda fonksiyon parametreyi 10'luk düzende ele alıp sonuç üretmeye çalışıyor.
parseInt fonksiyonu ikinci parametre olarak işlem yapacağı sayı düzenini alabiliyor. Yani fonksiyonu şu şekilde çalıştırırsak istediğimiz sonuca ulaşabiliriz.
parseInt('06',10); // 6
parseInt('07',10); // 7
parseInt('08',10); // 8
parseInt('09',10); // 9
Çalışma anında bu tip problemlerin ortaya çıkmasının önüne geçmek için her zaman parseInt fonksiyonuna sayı düzenini ikinci parametre olarak geçmenizi tavsiye ederim.
Alıntı: http://www.karalamalar.net/javascript-parseint-basinizi-agritmasin/
Yorumlar
Yorum Gönder