Giriş

JavaScript, modern web uygulamalarında sıkça kullanılan dinamik bir programlama dilidir. Bu makalede temel kavramlara—değişken tanımlama, veri türleri, kapsam (scope) ve kısa örnek uygulamalara—odaklanıyoruz. Amaç, kavramları net ve pratik örneklerle açıklamak; derin teknik ayrıntılara daha sonra geçecekler için sağlam bir temel sağlamak.

Değişkenler: var, let ve const

JavaScript'te değişken oluşturmak için üç ana anahtar kelime kullanılır: var, let ve const. Genel kural olarak; let blok düzeyinde (block-scoped), const ise yeniden atama yapılmayan sabit değerler için tercih edilir. Bu ayrım ve tanımlar için Programiz'in ilgili sayfasına bakabilirsiniz: https://www.programiz.com/javascript/variables-constants (kaynak).

Temel kullanım örnekleri:

// let ve const örneği
let isim = "Ali";
const PI = 3.1415;
isim = "Ayşe"; // let ile yeniden atama mümkün
// PI = 3.14; // const yeniden atamaya izin vermez (çalıştırıldığında hata verir)

Not: const ile tanımlanan bir obje veya diziye yeni ögeler eklemek veya iç özellikleri değiştirmek mümkündür; yalnızca değişkene yeni bir referans atanamaz. Örnek:

const user = { name: "Ali" };
user.name = "Ayşe"; // nesne özelliği değiştirilebilir
// user = { name: "Mehmet" }; // doğrudan yeniden atama hata verir

var vs let/const: kapsam ve hoisting

var fonksiyon kapsamına (function-scoped) sahiptir ve tanımlanmadan önce erişildiğinde hoisting nedeniyle undefined değeri gösterir. let ve const ise blok kapsamlıdır ve tanımlanmadan önce erişilmeye çalışılırsa "temporal dead zone" nedeniyle ReferenceError ile karşılaşılabilir. Bu davranışların ayrıntıları ve örnekleri için JavaScript.info yararlı bir kaynaktır: https://tr.javascript.info/variables (kaynak).

// var ile hoisting örneği
console.log(a); // undefined (değişken tanımlanmış ama atama sonrası gerçekleşti)
var a = 5;
// let ile aynı kullanım hata verir
// console.log(b); // ReferenceError
let b = 5;

İsimlendirme kuralları

Değişken isimleri harfler, rakamlar, alt çizgi (_) ve dolar işareti ($) içerebilir; ancak rakamla başlayamaz ve JavaScript anahtar kelimeleriyle çakışmamalıdır. Anlamlı ve açıklayıcı isimlendirme (ör. kullaniciAdi, toplamTutar) kod okunabilirliğini artırır. Kaynak: https://www.tutorialsteacher.com/javascript/javascript-variable (kaynak).

Temel veri türleri

JavaScript'in temel (primitive) veri türleri genel olarak şunlardır: number, string, boolean, null, undefined, symbol ve bigint. Bu sınıflandırma hakkında kısa bir özet için W3Schools'un ilgili sayfasına bakabilirsiniz: https://www.w3schools.com/js/js_datatypes_primitives.asp (kaynak).

Tür Açıklama Kısa örnek
number Tamsayılar ve ondalık sayılar let s = 42; let pi = 3.14;
string Metin verileri let ad = "Ayşe";
boolean true veya false let aktif = true;
null Bilinen şekilde boş bir değer let x = null;
undefined Henüz atanmamış değişkenler let y; // undefined
symbol Benzersiz, değiştirilemez değerler let id = Symbol("id");
bigint Çok büyük tam sayılar let big = 9007199254740991n;

Bir küçük not: tarihi sebeplerle typeof null ifadesi 'object' döndürür; bu JavaScript'teki bilinen bir ayrıntıdır ve tür kontrolü yaparken göz önünde bulundurulmalıdır.

typeof örnekleri

typeof 5; // "number"
typeof "metin"; // "string"
typeof true; // "boolean"
typeof null; // "object" (ayrıntı)

Kapsam (Scope) ve yaşam döngüsü

Kapsam, bir değişkene hangi kod bloklarının erişebileceğini belirler. Özetle:

  • Global scope: Programın her yerinden erişilen değişkenler (genellikle pencere/ortamın global nesnesine bağlıdır).
  • Function scope: Fonksiyon içinde var ile tanımlanan değişkenler yalnızca o fonksiyon içinden erişilebilir.
  • Block scope: let/const ile tanımlanan değişkenler yalnızca tanımlandıkları blok ({ ... }) içinde geçerlidir.

Hoisting kavramı, değişken tanımlamalarının JavaScript tarafından yürütme öncesinde 'yukarı taşındığı' izlenimini verir; ancak davranış var ve let/const için farklıdır. Daha fazla teknik ayrıntı ve örnekler için JavaScript.info'yu inceleyebilirsiniz: https://tr.javascript.info/variables (kaynak).

Kısa, uygulanabilir örnekler

Aşağıdaki kısa örnekler, yukarıdaki kavramları somutlaştırmak için hazırlanmıştır.

1) Değerlerin birleştirilmesi (template literals)

const isim = "Merve";
const yas = 28;
console.log(`${isim} ${yas} yaşında.`);

2) Değişken takası (geçici değişkenle)

let a = 1;
let b = 2;
let temp = a;
a = b;
b = temp;
// a artık 2, b artık 1

3) Basit koşul örneği

let puan = 85;
if (puan >= 50) {
console.log('Geçti');
} else {
console.log('Kaldı');
}

Hata ayıklama ve iyi uygulamalar (pratik kontrol listesi)

  • Varsayılan olarak const kullanın; gerektiğinde let tercih edin.
  • Kıyaslamalarda === ve !== kullanarak tür dönüşümlerinden kaynaklı sürprizleri azaltın.
  • Anlamlı değişken isimleri seçin (ör. toplamTutar, kullaniciAdi).
  • Tarayıcı konsolunu (DevTools) etkin kullanın: console.log(), debugger, ağ (network) sekmesi gibi araçlar hataları bulmayı kolaylaştırır.
  • Statik analiz için ESLint gibi araçlar kullanın; kod standartları tutarlılığı sağlar.

Kaynaklar ve ileri okuma

Bu makaledeki tanımlar ve temel bilgiler için başvurabileceğiniz bazı kaynaklar:


Özet

Bu rehber, JavaScript'te değişken tanımlama yöntemlerini (var/let/const), temel veri türlerini ve kapsamla ilgili önemli noktaları pratik örneklerle sundu. Temel olarak; anlamlı isimlendirme, const önceliği ve tür kontrolü iyi uygulamalardır. Daha derin konular (fonksiyonel programlama, asenkron işlemler, performans optimizasyonu) için ileri kaynaklara göz atabilirsiniz.

Not: İçerikte verilen kod örnekleri eğitim amaçlıdır ve gerçek üretim ortamına alınmadan önce uygun test ve güvenlik değerlendirmelerinden geçirilmelidir.