23 Ekim 2022

Veri Tipleri

Bir JavaScript değişkeni her türlü veriyi tutabilir. Önce karakter dizisi (string) atansa da sonra sayısal değer alabilir:

// Hata yok
let mesaj = "merhaba";
mesaj = 123456;

Bu şekilde olaylara izin veren tipteki dillere “dinamik tip” dil denir. Veri yapıları olsa bile değişkenler bu yapılara bağlı değildir.

JavaScript dilinde sekiz farklı veri tipi bulunmaktadır. Şimdilik bu tiplerden bahsedeceğiz gelecek bölümlerde ise daha derinlemesine bu tipleri inceleyeceğiz.

Number – Sayı

let s = 123;
s = 12.345;

sayı hem integer hem de floating point sayıları için kullanılır. Sayılar *, /, + veya - işlemlerine girebilirler. Normal sayıların haricinde “özel sayısal değerler” de sayı olarak tanımlanabilir. Bunlar : Infinity, -Infinity ve NaN gibi değerlerdir.

  • Infinity matematiksel Sonsuzluğu ∞ ifade eder. Diğer tüm sayılardan büyük olan özel bir sayıdır.

    0’a bölünmede sonuç sonsuzu verir:

    alert( 1 / 0 ); // Infinity

    veya doğrudan ekranda gösterebilirsiniz:

    alert( Infinity ); // Infinity
  • NaN hesaplamalarda bir hata olduğunu gösterir. Hatalı veya tanımsız matematiksel hesapları gösterir, örneğin:

    alert( "Sayı Değil ( Not a Number) " / 2 ); // NaN, böyle bir bölme işlemi yapılamaz.

    NaN yapışkandır. NaN üzerinde yapılacak herhangi bir işlem yeniden NaN çıktısı verecektir:

    alert( "not a number" / 2 + 5 ); // NaN

    Öyleyse matematiksel işlemlerin herhangi bir yerinde NaN alınıyorsa bu hesabın tamamını etkiler.

Matematiksel hesapların güvenliği

JavaScript üzerinden matematik hesapları yapmak güvenlidir. Her işlemi yapabilirsiniz. 0’a bölme normal harf dizesini bir sayıya bölmeye çalışma vs.

Kodunuzun tamamı hiç durmadan çalışacaktır. En kötü ihtimalle NaN sonucunu alınır.

Özel sayısal değerler “number” tipine aittir. Tabii ki sayı bizim bildiğimiz tipte sayı değillerdir. Sayılar bölümünde sayısal değerler ile çalışmayı daha derinlemesine göreceksiniz.

BigInt – Büyük Sayı

JavaScript’te “number” türü, şundan büyük tamsayı değerlerini temsil edemez (253-1) (bu 9007199254740991), veya daha az -(253-1) negatifler için. Dahili temsillerinden kaynaklanan teknik bir sınırlamadır.

Çoğu amaç için bu oldukça yeterlidir, ancak bazen gerçekten büyük sayılara ihtiyacımız olabilir, kriptografi veya mikrosaniye hassasiyetli zaman damgaları için.

Son zamanlarda, isteğe bağlı uzunluktaki tam sayıları temsil etmek için dile BigInt türü eklendi.

Bir tamsayının sonuna n eklenerek BigInt değeri oluşturulur:

// Sondaki "n" bu değerin bir BigInt olduğu anlamına gelir
const bigInt = 1234567890123456789012345678901234567890n;

BigInt sayılarına nadiren ihtiyaç duyulduğundan, onları burada ele almıyoruz, ancak onlara ayrı bir bölüm "bigint" adresindeki makale bulunamadı ayırdık. Bu kadar büyük sayılara ihtiyacınız olduğunda okuyun.

Compatibility issues

Şu anda, BigInt Firefox/Chrome/Edge/Safari’de destekleniyor, ancak IE’de desteklenmiyor.

Bir tarayıcının hangi sürümlerinin desteklendiğini öğrenmek için * MDN * BigInt uyumluluk tablosunu kontrol edebilirsiniz.

String – Karakter Dizisi

JavaScript’te karakter dizileri çift tırnak içerisine alınmalıdır.

let str = "Merhaba";
let str2 = 'Tek tırnak da çalışır';
let phrase = `değer gömülebilir ${str}`;

JavaScript’te 3 çeşit tırnak içine alma yöntemi vardır.

  1. Çift tırnak: "Hello".
  2. Tek tırnak: 'Hello'.
  3. Ters tırnak: `Hello`.

Çift tırnak ile tek tırnak “basit” tırnaklardır. Aralarında bir farklılık yoktur.

Ters tırnak ise “genişletilmiş fonksiyonlu” tırnaktır. Bunu kullanarak karakter dizisi içerisine ${...} gibi başka bir dizi yerleştirebiliriz. Örneğin:

let isim = "Ahmet";

// değişken gömme
alert( `Hello, ${isim}!` ); // Merhaba Ahmet!

// ifade gömme
alert( `sonuç : ${1 + 2}` ); //sonuç :  3

${...} içerisinde yazılan ifade çalıştığında karakter dizisinin bir parçası olur. ${...} içerisine her şeyi koyabiliriz: değişken ismi adi veya matematiksel ifade 1+2 gibi.

Lütfen unutmayın ki bunu sadece kesme tırnak “`” ile yapabilirsiniz.