Bu bölümde JavaScript’te olduğu gibi bütün programlama dillerinde önemli bir kavram olan değişkenler ve veri tiplerini kısa bir göz atacağız.

JavaScript’te Değişkenler

Herhangi bir türdeki veriler değişken ismi verilen geçici kayıt alanlarında tutulurlar. Kısaca değişkenlere bir değer için isimlendirilmiş yer tutucular diyebiliriz. Değişkenleri tanımlarken var (tüm ECMAScript versiyonlarında), let ve const (ECMAScript 6 ile tanıtılmış) olmak üzere 3 anahtar sözcükten herhangi birini kullanabiliriz.

Değişken Tanımlama ve Değer Atama

Önce değişkeni tanımlayıp daha sonra bu değişkenimize = operatörü ile değer ataması yapabiliriz. Sonrasında ise bu değişken üzerinde çeşitli işlemleri kolayca gerçekleştirebiliriz.

let yas;
console.log(typeof yas);

yas değişkeni tanımlandı fakat değer ataması yapılmadı. Bu değişkenin türünü saptamak istediğimizde undefined veri tipi yanıtını alırız.

let sayi = 5;

sayi isimli değişkenimiz tanımlandı ve kendisine 5 değeri atandı. Bir değişken let ya da const anahtar sözcüğü ile yalnız bir kez tanımlanabilir (var sözcüğü ile tanımlanmış değişkenler için geçerli değildir). Tanımlanmış (deklare edilmiş) bir değişkeni tekrar tanımlamak istediğinizde hata verecektir.

let sayi = 15; // sayi isimli değişken tanımlandı ve sayı tipinde 15 değeri atandı
sayi = sayi + 20; // sayı değişkenimize 20 eklendi. Şu an ki değeri 35 oldu.
let sayi; // HATA!! sayi değişkenini yeniden deklare etmeye kalkarsak hata mesajı alırız. 

let ve const Arasındaki Farklar

const sözcüğü script boyunca değişmeyecek değerler için kullanılır. Mesela matematikteki pi sayısı. Şayet const anahtar sözcüğü ile tanımlanmış bir sabite yeni bir değer atamak isterseniz hata mesajı verecektir.

const sözcüğü ile tanımlanmış dizilere ve nesnelere yeni elemanlar eklenebilir, mevcut elemanlar da silinebilir. Sadece yeniden atama yapılamaz.

const pi = 3.14; // sabit
pi = 3; // HATA! const ile tanımlanmış ise değiştirilemez.

let ise değiştirilebilecek değerleri tutacak değişkenlerde kullanılır.

JavaScript Veri Türleri

Yazdığınız script ya da programa sırası geldiğinde kullanması ve işlemesi için çeşitli tiplerde (metin, sayı) değerler verirsiniz, ya da program çalışırken verdiğiniz yönergelere göre değerler oluşturur / dönderir.

typeof Operatörü

Yeri gelmişken verilen değişkene ya da değere ait veri tipini saptamak için typeof operatörünü kullanabiliriz.

console.log(typeof 'Merhaba');

Konsola ‘Merhaba’ değerinin veri tipi olarak string yazar.

Temel olarak JavaScript’te basit (primitive) ve karmaşık (nesneler) olmak üzere iki veri grubu vardır.

Basit Veri Tipleri

  • Number (sayı; tamsayı, ondalık sayı…)
  • String (metin)
  • Boolean (mantıksal)
  • Undefined
  • Null
  • Symbol (sembol)
  • BigInt

bunların dışında kalan tüm veri tipleri nesne (object) grubuna aittir.

Karmaşık Veri Tipleri

  • Nesneler
  • Diziler

Not: JavaScript’te diziler de nesne grubuna ait veri türüdür.

console.log(typeof ['elma', 'armut', 'portakal']);

[‘elma’, ‘armut’, ‘portakal’] ifadesi elemanları sırasıyla ‘elma’, ‘armut’, ‘portakal’ olan bir diziyi temsil eder. Yukarıdaki ifade kod blogu konsola object çıktısını verir. İlerki konularımızda dizilerden ayrıntılı bir şekilde bahseceğiz.

Aslında basit veri tiplerinden olan null ‘un türünü typeof operatörü ile saptayacak olursak veri tipi olarak object çıktısını alırız. Bunun nedeni JavaScript kurallarını düzenleyen kurulun (ECMA) ilk sürümlerle yazılmış JavaScript kodlarının çalışırken herhangi bir hataya neden olmasının önüne geçmek istemeleri diyebiliriz.

Aslında null bir değer boş bir nesne işaretçisi anlamına gelmektedir. Bundan dolayı typeof null sözcüğü object döndürür.

console.log(typeof null);

Konsola object yazacaktır.

Bir diğer JavaScript ilginçliği de sayılarla işlem yaparken sayı yerine başka tipte veri geldiğinde JavaScript NaN (Not a Number: Bir Sayı Değil) şeklinde çıktı üretir. Bu NaN ifadesi için typeof operatörü ile veri tipini saptamaya çalışırsak number şeklinde çıktı verecektir!! Yani NaN (bir sayı değil)’e ait veri tipi “sayı” olarak dönecektir.

console.log(6 / 'elma'); 

Bir sayıyı bir string ifadeye bölmeye çalıştığımızdan dolayı konsola NaN yazacaktır. Bu NaN değerin veri türüne bakacak olursak number şeklinde çıktı verecektir.

console.log(typeof NaN);

Number (Sayı) Veri Tipi

Tamsayı, ondalık sayı, heksadesimal sayılar gibi çeşitli sayı sistemlerine ait sayıları kapsayan veri tipidir. Belirtilirken tırnak içerisine alınmaz, yani ‘9’ bir sayı tipinde bir değişken olmayıp string’dir.

let numara = 10; // tamsayı
const pi = 3.14; // ondalık sayı
let hava_sicakligi = -3.5 // negatif sayı

Sayı Dönüştürme

Belli durumlarda sayı dönüşümlerine ihtiyaç duyacaksınızdır. Dönüştürmeler Number() dönüştürme fonksiyonu ile yapılır. Aşağıdaki örneği inceleyiniz.

let x = '000011';
console.log(typeof x); // string

console.log(typeof Number(x)); // sayı (11)

//boş string 0 (sıfır) olarak dönüşecektir.
console.log(Number('')); // 0

/* tırnaklar içerisinde boşluk hariç
sayı olmayan karakterler varsa NaN döner. */
console.log(Number('7 cüceler')); // NaN

/* sayının sadece sağında ve solunda boşluklar varsa
boşluklar kırpılır sonra dönüşüm yapılır */
console.log(Number(' 7.1 ')); // 7.1

// Boolean true 1'e false ise 0'a dönüşür
console.log(Number(true)); // 1
console.log(Number(false)); // 0

parseInt(), parseFloat() ve toFixed() Fonksiyonları

Bazı durumlarda ondalık bir ifadenin tam kısmını (10.123 -> 10) ya da bir tamsayıyı ondalık (10 -> 10.00) olarak kullanmaya ihtiyacınız olabilir.

parseInt() string ifade, ondalık sayılar, heksadesimal sayılar gibi verileri tamsayıya dönüştürür.

parseFloat() Verilen değerler şayet uygunsa ondalık sayı şekline dönüştürür.

toFixed() Tamsayıyı ondalık kısım şeklinde göstermek için ya da ondalık bir sayının ondalık kısmının basamak sayısını ayarlamak için toFixed() fonksiyonundan yaralanılır, parametre olarak ondalık kısım kaç basamaktan oluşması isteniyor ise basamak sayısı verilir.

let sayi = parseInt(102.45); // 102
let hex = "0xd";
let tam = parseInt(hex); //13

let sayi1 = parseFloat('2kedi'); // 2 (ilk karakter sayı olmak koşulu ile)
let sayi2 = parseFloat('15 kedi 3 ördek'); // 5 (boşluk ya da sayı ile başlamak koşulu ile gördüğü ilk sayıyı alır.
let sayi3 = parseFloat("1.123e4"); // 11230

//tamsayıya ondalık kısım ekleme
let x = 11;
let y = x.toFixed(2); // 11.00

//ondalık sayının basamak sayısını değiştirme
let pi = 3.1415926;
let pi_kisa = pi.toFixed(3); // 3.142

String (Metin) Veri Tipi

Birbiri ardından gelen karakterler serisine string tipte değişken denir. String belirtilirken ilgili karakterler tek tırnak (”), ya da çift tırnak (“”) arasına alınır. Tırnak içi boş olsa dahi string veri tipini belirtir.

const x = '';
console.log(typeof x); // konsola string yazacaktır.

const y = '4'; // '4' tırnak içerisinde olduğundan string

const mesaj = "JavaScript bir harika!";

Ters Tırnak (`…`) İçerisinde Değişken Kullanımı (Template Literals)

Interpolasyon yani değişkenlere ait değerleri yansıtmak için sıklıkla kullanılır. Ayrıca değerleri birden fazla satıra ayırmak için de kullanılmaktadır. Teknik olarak string değildir. Ters tırnak için klavye kısayolları ise;

  • Windows / Linux: ALT GR + ;
  • Mac: Klavye üzerinde mevcut.

Kullanım ise ${} süslü parantez içine değişkenimizin ismini yazarız yani ${degisken_adi} şeklindedir.; Örnek verecek olursak;

const hayvan = 'tavuk';
const adet = 5;

console.log(`Kümeste tam ${adet} adet ${hayvan} var.`);

Konsola ‘Kümeste tam 5 adet tavuk var.’ yazacaktır.

Escape (Kaçış) Karakterleri

Bazı durumlarda string belirtilen tırnak içerisinde ayıraç olarak tekrar tırnak kullanmanız gerekecektir. Başladığınız tırnak tipini tırnak içerisinde tekrar kullanmanız hataya sebep olacaktır. Diğer bir durum ise satır sonu gelmeden alt satıra geçmeniz gerekebilir. Bir string ifadede satır sonu gelmeden enter tuşu ile alt satıra geçerseniz hata mesajı alırsınız (tek tırnak ve çift tırnak kullandığınızda enter tuşu ile satırı bölemezsiniz). İşte bu gibi durumlarda kaçış karakterlerini kullanırız. Bazı önemli kaçış karakterlerini aşağıda listeledik.

\nalta yeni satır (new line)
\tçoklu boşluk (tab)
\’tek tırnak
\”çift tırnak
console.log("Geçen hafta Ankara'ya gittim.") // çift tırnak ifade içinde tek tırnak kullanabiliriz.
console.log('Bana "başarılar" diledi.') // tek tırnak ifade içinde çift tırnak kullanımı

console.log('O kitabı Ali'ye vermelisin'); // sözdizim hatası!!
/* JS Engine'nin kafası karışacaktır. 'O kitabı Ali' kısmını string olarak algılayacak
ama ye vermelisin' kısmının ne olduğuna anlam veremeyecektir. */

console.log('O kitabı Ali\'ye vermelisin'); // düzeltilmiş hali

console.log('Baharı bekleyen kumrular gibi 
Sende beni bekle sakın unutma.'); // sözdizim hatası verir.

console.log('Baharı bekleyen kumrular gibi\nSende beni bekle sakın unutma.');
/*
Baharı bekleyen kumrular gibi 
Sende beni bekle sakın unutma. 
*/

Boolean Veri Tipi

true ve false olmak üzere iki tip veri alır. Bu değerler tırnak içerisine alınmaz (Alınırsa artık string tipinde veri olur).

let hava_sicak_mi = true;
const sinifta_kaldim = false;

undefined Veri Tipi

Şayet bir değişken let ya da var anahtar sözcüğü ile tanımlanır buna değer atanmaz ise türü JavaScript’te özel bir değer olan undefined olur.

let kdv_orani;

kdv_orani değişkeninin veri türü undefined‘dır.

console.log(typeof deger);

Konsola undefined yazar. Daha önce tanımlanmamış deger isimli değişkenin veri tipi saptanmaya çalışılıyor.

null Veri Tipi

Boş anlamına gelen özel bir değerdir. Genelde daha sonra farklı değerler gelecek değişkenleri tanımlarken kullanılır.

let mesaj = null;

Not: Diziler ve Nesneler ayrı bir konu başlığı olarak işlenecektir.


Bir sonraki konumuz JavaScript’te operatörler.

Bir Yorum Yaz