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.
-
Infinitymatematiksel 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 ); // Infinityveya doğrudan ekranda gösterebilirsiniz:
alert( Infinity ); // Infinity -
NaNhesaplamalarda 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.NaNyapışkandır.NaNüzerinde yapılacak herhangi bir işlem yenidenNaNçıktısı verecektir:alert( "not a number" / 2 + 5 ); // NaNÖyleyse matematiksel işlemlerin herhangi bir yerinde
NaNalınıyorsa bu hesabın tamamını etkiler.
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.
Ş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.
- Çift tırnak:
"Hello". - Tek tırnak:
'Hello'. - 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.