JavaScript Dikkat Edilmesi Gerekenler 2

Paylaş

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.


Bunlarda ilgini çekebilir