JavaScript Dikkat Edilmesi Gerekenler 2
JavaScript ile kodlama yaparken eksik yazılma veya yanlış yazılma sonucu farklı sonuçlar elde edebiliriz.
Karşılaştırma operatörünü yanlış kullanmak
Karşılaştırma ifadeleri içindeki koşula karşılaştırma operatörü (==) yerine atama operatörü (=) kullanmak beklenmedik sonuçlar verebilir.
Aşağıdaki ifadede xSayisi değişken değeri 10 sayısına eşit olmadığından sonuç false olacaktır.
<script>
var xSayisi = 0;
alert(Boolean(xSayisi == 10)); // false
</script>
Ancak aşağıdaki gibi bir hata yapıldığında farklı bir sonuç verecektir.
<script>
var xSayisi = 0;
alert(Boolean(xSayisi = 10)); // true
</script>
Aşağıdaki gibi bir kullanımda daha farklı bir sonuç verecektir.
<script>
var xSayisi = 0;
alert(Boolean(xSayisi = 0)); // false
</script>
NOT: Atama operatörü her zaman atanan değeri verir.
Karşılaştırma hataları
Normal karşılaştırmada veri türü önemli değildir.
<script>
var xSayisi = 10;
var ySayisi = "10"
alert(Boolean(xSayisi == ySayisi)); // true
</script>
Tam karşılaştırmada veri türü önemlidir.
<script>
var xSayisi = 10;
var ySayisi = "10"
alert(Boolean(xSayisi === ySayisi)); // false
</script>
JavaScript switch deyimi de tam karşılaştırma kullanır.
Bu sıklıkla karıştırılan bir durumdur.
<script>
var xSayisi = 10;
switch(xSayisi) {
case 10: alert("Grrr");
}
</script>
Ancak aşağıdaki kullanımda sonuç farklı olacaktır.
<script>
var xSayisi = 10;
switch(xSayisi) {
case "10": alert("Grrr");
}
</script>
Toplama ve çıkarma operatörleri
Toplama operatörü sayılarda iki sayı toplar.
Ancak toplama operatörü metin veri türünde iki değeri birleştirir.
JavaScript’te her iki işlem toplama operatörü (+) ile yapılır.
Toplama operatörünü aşağıdaki gibi kullanmak farklı sonuçlar verecektir.
<script>
var xSayisi = 10 + 7; // 17
var ySayisi = 10 + "7"; // "107"
alert(xSayisi);
alert(ySayisi);
</script>
İki farlı türdeki değişkenin toplamı farklı olabilir.
<script>
var a = 10;
var b = 7;
var c = a + b; // 17
alert(c);
var x = 7;
var y = "8";
var z = x + y; // "78"
alert(z);
</script>
Kayan nokta sayılar
JavaScript’te tüm sayılar 64 bitlik kayan noktalı sayı olarak saklanır.
JavaScript dahil çoğu programlama dili kayan noktalı sayı işleminde farklı sonuçlar verebilir.
<script>
var a = 0.1;
var b = 0.2;
var c = a + b; // 0.30000000000000004
alert(c);
</script>
Bu sorunu çözmek için aşağıdaki yöntem kullanılabilir.
<script>
var a = 0.1;
var b = 0.2;
var c = (a * 10 + b * 10) /10 ; // 0.3
alert(c);
</script>
Yeni satırdan devam etmek
JavaScript uzun satırları birden fazla satıra bölebiliriz.
<script>
var a =
"Merhaba JavaScript";
alert(a);
</script>
Ancak satır değerin ortasından bölünemez.
<script>
var a = "Merhaba
JavaScript";
alert(a);
</script>
Satırı değerin ortasında bölmek için ters eğik çizgi kullanılır.
<script>
var a = "Merhaba \
JavaScript";
alert(a);
</script>
Hatalı sonlandırma
JavaScript kodlarını yanlışlıkla noktalı virgülle sonlandırırsanız farklı sonuçlarla karşılaşabilirsiniz.
<script>
var a = 5;
if(a == 8);
{
alert("Merhaba JavaScript");
}
</script>
Hatalı değer döndürme
Fonksiyondan geri değer döndürürken noktalı virgül kullanma zorunluluğu yoktur.
<script>
function Carp(a) {
var kuvvet = 10;
return a * kuvvet
}
alert(Carp(2));
</script>
İkiside aynı sonucu verecektir.
<script>
function Carp(a) {
var kuvvet = 10;
return a * kuvvet;
}
alert(Carp(2));
</script>
Değişken tanımını ikinci satırda yapabilirsiniz.
<script>
function Carp(a) {
var
kuvvet = 10;
return a * kuvvet;
}
alert(Carp(2));
</script>
Ancak değer döndürmeyi iki satıra bölünce sonuç farklı olacaktır.
<script>
function Carp(a) {
var
kuvvet = 10;
return
a * kuvvet;
}
alert(Carp(2));
</script>
Peki neden böyle oldu?
Çünkü JavaScript yorumlayıcısı sizin aşağıdaki gibi bir ifade yazdığınızı varsayar.
<script>
function Carp(a) {
var
kuvvet = 10;
return;
a * kuvvet;
}
alert(Carp(2));
</script>
JavaScript bir değişken oluşturulduğunda sonraki satırda değişkeni tanımlamaya çalışacaktır.
var
kuvvet = 10;
Ancak bir değeri geri değer döndürmeye çalışıldığında
return
ifadesini aşağıdaki gibi yazıldığını varsayacaktır.
return;
NOT: Geri değer döndürmeyi birden fazla satıra bölmeyin.
Diziler ve nesneler
JavaScript adlandırılmış veya ilişkilendirilmiş dizileri desteklemez.
JavaScript dizileri sıra numarasına göre saklar.
<script>
var bilgi = [];
bilgi[0] = "Yusuf Sefa";
bilgi[1] = "SEZER";
bilgi[2] = 75;
alert(bilgi.length);
alert(bilgi[0]);
</script>
JavaScript nesne değerlerini nesne özelliklerinde saklar.
Diziler nesne olarak kullanılırsa JavaScript diziyi nesne veri türüne dönüştürür.
Dönüşümden sonra artık dizi fonksiyon ve özellikleri kullanılamaz hale gelir.
<script>
var bilgi = [];
bilgi["adi"] = "Yusuf Sefa";
bilgi["soyadi"] = "SEZER";
bilgi["kilo"] = 75;
alert(bilgi.length);
alert(bilgi[0]);
</script>
Değişken kapsamı
JavaScript bir çok programlama dilinin aksine döngü kod bloğu için yeni bir kapsam alanı oluşturmaz.
Aşağıdaki kod bloğu diğer programlama dillerinin aksine farklı bir sonuç verir.
<script>
for (var i = 0; i < 10; i++) {
// kod bloğu
}
alert(i);
</script>
JavaScript Derslerine buradan ulaşabilirsiniz…
Hayırlı günler dilerim.