Giriş
JavaScript öğrenirken üç temel kavram sıkça karşımıza çıkar: değişkenler, fonksiyonlar ve scope (kapsam). Bu kavramları anlamak, hem küçük script'lerde hem de daha büyük uygulamalarda hatasız ve sürdürülebilir kod yazmak için önemlidir. Aşağıda her kavramı kısa tanımlarla, çalışan örneklerle ve pratik önerilerle ele alacağız.
Değişkenler: ne için ve nasıl kullanılır?
Değişkenler, programınız içinde veri saklamak için kullanılır. Modern JavaScript'te en çok kullanılan iki tanımlama anahtar kelimesi let ve const'tır. Genel kurgu olarak const yeniden atama yapılmayacağı kesin olan değerler için, let ise değişebilecek değerler için tercih edilir. Resmi dokümantasyonda değişken tanımlamalarıyla ilgili detayları bulabilirsiniz: MDN Web Docs — Variables.
Basit örnekler:
const name = 'Ayşe';
let count = 0;
count = count + 1; // count şimdi 1
const ile tanımlanan bir değişkenin referansı yeniden atanamaz; bununla birlikte eğer değişken bir obje ise, objenin içindeki alanlar değiştirilebilir. Bu davranış hakkında daha fazla bilgi için MDN notlarına bakabilirsiniz.
Ne zaman const, ne zaman let?
- Öncelikle const kullanın: Bir değerin yeniden atanmasını istemiyorsanız const tercih edin.
- Değişecek değerler için let: Döngü sayacı, kullanıcı girişi gibi değişebilecek değerlerde let kullanın.
- Global değişkenlerden kaçının: Gereksiz global değişkenler isim çakışmalarına ve yönetimi zor kodlara yol açar.
Fonksiyonlar: kod bloklarını yeniden kullanma
Fonksiyonlar, belirli bir görevi yerine getiren, tekrar kullanılabilir kod bloklarıdır. Fonksiyon tanımlamak için klasik sözdizimi function anahtar kelimesidir; resmi referans için: MDN Web Docs — function ve öğretici örnekler için: MDN — Functions (Learn).
Temel fonksiyon örneği:
function greet(name) {
return 'Merhaba, ' + name + '!';
}
console.log(greet('Mert'));
Fonksiyonlar parametre alabilir, değer döndürebilir ve kendi scope'larını oluşturur. Fonksiyon içinde tanımlanan değişkenler genellikle sadece o fonksiyon içinde erişilebilir; bu konu bir sonraki bölümde scope ile birlikte ele alınacaktır.
Fonksiyon ifadeleri ve kısa notlar
- Fonksiyonları küçük, tek sorumluluklu parçalara bölün. Her fonksiyon tek bir amaca hizmet etmelidir.
- Fonksiyon tanımını hangi yöntemle yapacağınız (deklarasyon veya ifade) bazen hoisting davranışını etkiler; bu konuyu resmi dokümanda görebilirsiniz.
Scope (kapsam): değişken nereden görünür?
Scope, bir değişkenin veya fonksiyonun erişilebilir olduğu kod bölgesidir. JavaScript'te yaygın scope türleri global, fonksiyon ve blok scope'tur. Daha fazla tanım için MDN Glossary'deki scope maddesine bakabilirsiniz: MDN — Scope ve global kapsam hakkında bilgi için: MDN — Global scope.
Örnek: fonksiyon ve blok scope
function demo() {
let inside = 'içeride';
console.log(inside); // 'içeride'
}
demo();
// console.log(inside); // burada inside görünür değil, erişilmeye çalışılırsa hata olur
Block scope örneği (let/const):
if (true) {
let blockVar = 5;
const blockConst = 'x';
}
// console.log(blockVar); // blockVar görünür değil
Var ile tanımlanan değişkenler function scope'a tabidir; yani bir blok içinde var ile tanımlanan bir değişken, o bloğun dışından da erişilebilir olabilir. Bu farklılık, kodun davranışını etkileyebilir; modern kodlarda genelde let/const tercih edilir.
Bütünleştirilmiş örnek: sayaç fonksiyonu
Basit bir örnek üzerinden değişken, fonksiyon ve scope'u birleştirelim. Aşağıdaki mantık, bir sayaç değerini saklayıp her çağırdığınızda artıran bir yapı gösterir:
function makeCounter() {
let count = 0; // fonksiyon scope'u içinde
return function() {
count = count + 1;
return count;
}
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2
Bu örnekte iç fonksiyon, dış fonksiyonun count değişkenine erişmeye devam eder. Bu şekilde fonksiyonlar ve scope birlikte çalışarak veriyi saklayabilir. (Temel scope tanımları için MDN kaynaklarına bakabilirsiniz.)
Pratik ipuçları ve kontrol listesi
- const öncelikli: Değer değişmeyecekse önce const kullanın.
- Anlamlı isimler: Değişken ve fonksiyon adları işlevini anlatmalı (ör. totalPrice, calculateTax).
- Küçük fonksiyonlar: Bir fonksiyonun amacı net olsun; birden çok iş yapmasın.
- Global kapsamı sınırlayın: Gereksiz global değişken kullanmayın; modüller veya fonksiyonlarla kapsama sınırı koyun.
- Test edin: Tarayıcı konsolunda veya Node.js ile küçük testler yaparak değişken ve fonksiyon davranışını doğrulayın.
Hızlı referans
| Kelime | Davranış |
|---|---|
| let | Block-scoped; yeniden atanabilir. |
| const | Block-scoped; yeniden atama yok (objelerin içi değiştirilebilir). |
| var | Function-scoped; hoisting davranışı vardır; modern kodda let/const tercih edilir. |
Kaynaklar ve daha fazla okuma
- MDN Web Docs — Storing the information you need — Variables
- MDN Web Docs — function
- MDN Web Docs — Scope (glossary)
- MDN — Functions (Learn)
Sonuç
Değişkenler, fonksiyonlar ve scope JavaScript'in yapı taşlarıdır. Bu üç kavramı örneklerle ve pratik kurallarla öğrendikten sonra, kod yazarken daha güvenilir ve okunabilir çözümler üretebilirsiniz. Resmi referansları (MDN) takip ederek detayları ve istisnaları adım adım keşfetmeniz faydalı olacaktır.