JavaScript Veri Tipleri

MKorhanKosece
baakademi
Published in
6 min readSep 27, 2020

Veri türü, değişkenler içinde saklanacak verinin türüne göre sınıflandırılması işlemidir. Veri türleri her programlama dili için oldukça önemli bir kavramdır.

Bir işlem yaparken değişken içinde saklanan verinin türünü önceden belirtiriz. Böylece bilgisayar, verinin saklanacağı bellek alanını buna göre ayırır ve uygun işlemi gerçekleştirebilir.

JavaScript, C# veya Java gibi diğer programa dillerine benzer veri tiplerini içerir. Genel olarak iki veri türü olarak sınıflandırabiliriz;

1. İlkel (Primitive) Veri Türleri:

  • String
  • Number
  • Boolean
  • Undefined
  • Null
  • Symbol

2. İlkel Olmayan (Reference) Veri Türü:

  • Object
  • Array
  • Function

JavaScript dinamik bir dildir, yani bir değişken herhangi bir zamanda herhangi bir veri türünü tutabilir. Örneğin;

var x = 100;           
x = "javascript";
x = false;
x = null;
x = undefined;

alert(x); // undefined

x değişkeni en son atanmış undefined değerini tutacaktır.

typeof operatörü ile bir değişkenin veri tipini öğrenebiliriz. Eğer ki object içindeki herhangi bir yapısal tipi kontrol etmek istersek, bunun için typeof kullanmak anlamsız olur, çünkü her zaman “object” çıktısını alırız. Bu tarz bir durumda kesin bir sonuç alınamasa da instanceof operatörünü kullanmak mantıklı olabilir.

<script>var myString = new String();
var myDate = new Date();
var myString2 = "string"
console.log(myString instanceof Object); // true
console.log(myString instanceof Date); // false
console.log(myString instanceof String); // true
console.log(myDate instanceof Date); // true
console.log(myDate instanceof Object); // true
console.log(myDate instanceof String); // false
console.log(myString2 instanceof String);// false !!!!!!
</script>

Yukarıda görüldüğü gibi instanceofsadece object verileri üzerinde kullanılabilir, primative değerlerde false çıktısını verecektir.

1. İlkel (Primitive) Veri Türleri

Nesne dışındaki bütün veri tipleri sonradan değiştirilemez değerler tanımlar. Örnek olarak C dilinin tersine karakter dizileri (String) değiştirilemez. Bu tipteki değerler ilkel değerler (primitive values) olarak tanımlanır.

İlkel değer bazlı tipte tanımlanan değişkenler adından da anlaşılacağı gibi değerleri tutarlar. Referans bazlı tiplerde ise değeri değil, onun referansını ya da adresini tutarlar. Referans veri türlerinden sonra tekrar bu konuya değineceğim.

JavaScript String

String veri tipi içerisinde metinsel ifadeleri saklar. String veriler değişkenlere atanırken (“) tırnak işareti ya da (‘) kesme işareti kullanılır.

var bandName1 = "Rammstein";    // çift tırnak
var bandName2 = 'Rammstein'; // tek tırnak

İç içe tırnak kullanılması gerektiğinde ise aynı çeşit tırnağı kullanmak hata almamıza sebep olacağı için dikkat etmeliyiz.

//doğru kullanım, çift tırnak içinde tek tırnak da kullanılabilir
var answer = 'He is called "Johnny"';

JavaScript Number

JavaScript programlama dilinde sadece tek tür sayı vardır. Eğer ki sayı ondalıklı yazılacak ise “,” yerine “.” kullanılmalıdır. Ayrıca bir sayı değeri verilecek ise tırnak “” kullanılmamalıdır. Kullanılır ise sayı bilgisayar tarafından string olarak algılanır.

var age = 25; 
console.log(typeof age) // number
var money = 73.25;
console.log(typeof money) // number

var year = "1966"
console.log(typeof year) // string

Ayrıca number tipine özel “infinity” “-Infinity” ve NaN (Not a Number) değerleri de bulunmaktadır.

Javascript Boolean

Boolean veri türü sadece iki değer alır: true (doğru) ve false (yanlış). Mantıksal veri türü genelde koşul ifadelerinde kullanılır.

var isChecked = true;
console.log(isChecked) // boolean
alert( 2 > 1 ); // true
alert( 2 == 1 ); // false
alert( 2 != 1 ); // true
alert( 'Z' > 'A' ); // true
alert( 'Glow' > 'Glee' ); // true

Javascript Undefined

JavaScript programlama dilinde, bir değişkene değer atanmazsa, bir değişkenin değeri yoksa undefined olarak ifade edilir.

var x;
var y = undefined
var z = ""
console.log(typeof x) // undefined
console.log(typeof y) // undefined
console.log(typeof z) // string!!!!!

Yukarıda görüldüğü gibi boş atanmış (Empty Box) bir değer undefined olarak tanımlanmayıp string olarak tanımlanmaktadır! .Çünkü burada atama vardır, üstte dediğimiz gibi undefined atanmayan değerler için kullanılır.

Javascript Null

Javascript’ de null primative bir değer olmasına rağmen ,bir object olarak algılanır. Yani tanımladığınız bir veri içine null değer attığınızda bellekte bir alan tahsis edilir ancak içerisinde bir değer olmadığını söylemiş oluruz.

Bu özel durum aslında JavaScript’de hala çözülememiş bir bug olarak devam etmektedir. Null çok özel ve önemli bir veridir.

Null değerini Undefined ile karşılaştırdığımız da value olarak aynı olduklarını fakat tip olarak farklı olduklarını görürüz.

typeof undefined           // undefined
typeof null // object

null === undefined // false
null == undefined // true

Javascript Symbols

Sembol türü, nesneler için benzersiz tanımlayıcılar oluşturmak için kullanılır. ECMAScript 6 ile beraber 2015 senesinde son olarak eklenen bir veri türüdür. Özellikleri eşsiz (unique) ve değiştirilemez (immutable) olan nesnelerdir.

let id = Symbol();
console.log(typeof id) // symbol

Ayrıca sembollere tanım açıklama ( sembol ismi ) verilebilir. Bu genelde hata ayıklarken kullanılır:

// id açıklaması "id" olan bir semboldür. 
let id = Symbol("id");

2. İlkel Olmayan (Reference) Veri Türü

JavaScript Objects

Genel olarak Reference veri türlerine Objects denir. Nesne türü özel bir tür olarak geçer. Diğer tüm türler “ilkel” olarak adlandırılır çünkü değerleri yalnızca tek bir şey içerebilir (bir metin veya sayı vb.). Aksine, nesneler veri koleksiyonlarını ve daha karmaşık varlıkları depolamak için kullanılır.

var address= {
city: 'İstanbul',
country: 'Türkiye'
number : 12
}

console.log(address) // object

İlkel verilerden farkına yazının en başında değinmiştik. Biraz daha örneklemek gerekirse:

Javascript, değişkenlere atadığımız değerleri bellekte saklamak zorundadır ve iki tip bellek alanı vardır. Bunlar stack ve heap alanlarıdır.

Stack aslında kolay erişilebilen basit yönetilen bir alandır. Sadece büyüklüğü belli olan değişkenler stack alanında saklanır. Bunlar numbers, string ve boolean gibi ilkel veri tipleridir.

Boyutu ve yapısı belli olmayan veri tipleri yani heap alanında saklanır. Nesneler (object) ve diziler (array) çalışma zamanında mutasyona uğrayabilirler bu nedenle heap alanında saklanırlar.

Ayrıca; ilkel tiplerde (==) kullanırsak bu değişkenlerin içindeki değerlerin eşit olup olmadığına kontrol eder.

Referans tiplerde ise (==) nesnelerin adreslerinin eşit olup olmadığını kontrol eder. Eğer değişkenlerin içindeki değerlerin eşit olup olmadığını kontrol etmek istiyorsak, bu durumda equals metodu kullanılır.

Yazının devamında daha fazla detaya girmeyeceğim. Eğer ki farkları hakkında daha fazla bilgi almak istiyorsanız, değişken atama , ilkel ve referans tipli değişkenlerin saklanma şekilleri konusunda ileri okuma yapmanızı tavsiye ederim.

JavaScript Arrays

var bands =["Iron Maiden","Avenged Sevenfold","Black Sabbath","Dio"]
console.log(typeof names) // object

Görüldüğü üzere diziler (Array) de object veri türüne sahiptir. Tekli değişkendeki birden çok değeri depolamak için kullanılır. Dizideki her elemanın kendine özgü bir index’i(0 dan başlayarak sırayla giden numaralandırma sistemi) vardır. Şu şekilde kullanılır;

alert(bands[1])  //Output: Avenged Sevenfold

Javascript Functions

Javascript’de fonksiyonlar da bir object olarak nitelendirilir fakat tür olarak kendilerine özgülerdir. Ek olarak callable(çağırılabilme) özelliğine sahiptirler ve bu da bir çok şekilde kullanımlarını sağlar. Diğer fonksiyonlara argüman olarak iletilebilir ve fonksiyon içinde başka bir fonksiyon döndürülebilir.

console.log(typeof function myFunc(){}) // function function hello(name){     
return "Hello, " + name; }
function sayHello(helloFunction, name){
return helloFunction(name); }
var result = sayHello(hello, "Axl");
alert(result); // Output: Hello, Axl

İlkel olmayan veri türlerine Date , RegExp, Map ve Set gibi bir çok veri tipi daha olduğunu unutmayalım. Fakat bu yazımızda daha fazlasına değinmeyeceğiz.

--

--