JavaScript: Başlangıçtan İleri Seviyeye
Bölüm 4 / 312 dk okuma

Veri Tipleri

Primitive ve reference tipler, typeof operatörü, null vs undefined ayrımı.

JavaScript'te değerler iki kategoriye ayrılır: primitive ve reference.

Primitive (ilkel) tipler

Değer kopyalanır, doğrudan saklanır. 7 tane var:

TipÖrnek
string"merhaba", 'a', `hello $`
number42, 3.14, -7, Infinity, NaN
booleantrue, false
nullnull (kasıtlı yokluk)
undefinedundefined (atanmamış)
bigint9007199254740993n
symbolSymbol("id") (benzersiz tanımlayıcı)

Reference tipler

Bellekte bir adres saklanır, değişkenler aynı objeye referans gösterebilir:

  • object ({}, [], fonksiyonlar, tarihler, regex…)
const a = { x: 1 };
const b = a;       // aynı obje, iki referans
b.x = 99;
console.log(a.x);  // 99 — a da etkilendi

Primitive'lerde böyle olmaz:

let x = 5;
let y = x;
y = 99;
console.log(x); // 5 — kopya alındı

typeof operatörü

typeof "abc"      // "string"
typeof 42         // "number"
typeof true       // "boolean"
typeof undefined  // "undefined"
typeof {}         // "object"
typeof []         // "object"  ← ❗ dikkat
typeof null       // "object"  ← tarihi bug, hep böyle kalacak
typeof function(){} // "function"

Dizi kontrolü için: Array.isArray(x).

null vs undefined

  • undefined: bir değişken tanımlanmış ama hiçbir değer atanmamış.
  • null: programcı bilinçli olarak "boş" demiş.
let user;
console.log(user); // undefined — ben atamadım
 
let session = null; // bilinçli: "şu an oturum yok"

NaN — Not a Number

Geçersiz matematik sonucu:

0 / 0           // NaN
parseInt("abc") // NaN
NaN === NaN     // false ← kendisine bile eşit değil
Number.isNaN(x) // doğru kontrol budur
Önemli

JavaScript'in tipleri dinamiktir — bir değişkene bugün string atayıp yarın number atayabilirsin. Bu güç, aynı zamanda hata kaynağıdır. Büyük projelerde TypeScript kullanmak bu yüzden yaygındır.

Bu bölümü bitirdin mi?

İlerlemen tarayıcıda saklanır, eğitim listesinde görünür.

Paylaş