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:
- Programiz — JavaScript Değişkenler ve Sabitler (var/let/const açıklamaları).
- W3Schools — JavaScript Primitif Veri Türleri (temel türler özeti).
- JavaScript.info — Değişkenler (kapsam, hoisting ve detaylı örnekler).
- TutorialsTeacher — JavaScript Değişkenler (isimlendirme ve örnekler).
Ö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.