Ders İçeriği
Değişkenler Nedir?
Değişkenler, verileri depolamak ve onlara bir isim vermek için kullanılan "konteynerler" olarak düşünülebilir. Bir değişken tanımladığınızda, bilgisayarın belleğinde bir alan ayrılır ve bu alana bir isim verilir. Daha sonra bu ismi kullanarak, depolanan veriye erişebilir ve değiştirebilirsiniz.
JavaScript'te değişken tanımlamak için üç farklı anahtar kelime kullanılabilir: var
, let
ve const
. Her birinin farklı özellikleri ve kullanım alanları vardır.
Değişkenler, verileri depolamak ve onlara bir isim vermek için kullanılan "konteynerler" olarak düşünülebilir. Bir değişken tanımladığınızda, bilgisayarın belleğinde bir alan ayrılır ve bu alana bir isim verilir. Daha sonra bu ismi kullanarak, depolanan veriye erişebilir ve değiştirebilirsiniz.
JavaScript'te değişken tanımlamak için üç farklı anahtar kelime kullanılabilir: var
, let
ve const
. Her birinin farklı özellikleri ve kullanım alanları vardır.
var, let ve const Arasındaki Farklar
1. var
var
, JavaScript'in orijinal değişken tanımlama anahtar kelimesidir. ES6 (ECMAScript 2015) öncesinde, değişken tanımlamak için kullanılan tek yöntemdi.
var
'ın özellikleri:
- Fonksiyon kapsamına (function scope) sahiptir
- Aynı isimle yeniden tanımlanabilir
- Değeri değiştirilebilir
- Hoisting (yukarı çekme) özelliğine sahiptir (değişken tanımlanmadan önce kullanılabilir, ancak değeri undefined olur)
var
, JavaScript'in orijinal değişken tanımlama anahtar kelimesidir. ES6 (ECMAScript 2015) öncesinde, değişken tanımlamak için kullanılan tek yöntemdi.
var
'ın özellikleri:
- Fonksiyon kapsamına (function scope) sahiptir
- Aynı isimle yeniden tanımlanabilir
- Değeri değiştirilebilir
- Hoisting (yukarı çekme) özelliğine sahiptir (değişken tanımlanmadan önce kullanılabilir, ancak değeri undefined olur)
2. let
let
, ES6 ile birlikte gelen bir değişken tanımlama anahtar kelimesidir ve var
'a göre daha modern ve güvenli bir alternatiftir.
let
'in özellikleri:
- Blok kapsamına (block scope) sahiptir
- Aynı kapsamda aynı isimle yeniden tanımlanamaz
- Değeri değiştirilebilir
- Hoisting özelliğine sahiptir, ancak "temporal dead zone" nedeniyle tanımlanmadan önce kullanılamaz
let
, ES6 ile birlikte gelen bir değişken tanımlama anahtar kelimesidir ve var
'a göre daha modern ve güvenli bir alternatiftir.
let
'in özellikleri:
- Blok kapsamına (block scope) sahiptir
- Aynı kapsamda aynı isimle yeniden tanımlanamaz
- Değeri değiştirilebilir
- Hoisting özelliğine sahiptir, ancak "temporal dead zone" nedeniyle tanımlanmadan önce kullanılamaz
3. const
const
, ES6 ile birlikte gelen ve sabit değerler tanımlamak için kullanılan bir anahtar kelimedir.
const
'un özellikleri:
- Blok kapsamına (block scope) sahiptir
- Aynı kapsamda aynı isimle yeniden tanımlanamaz
- İlkel veri tipleri için değeri değiştirilemez
- Nesneler ve diziler için referans değiştirilemez, ancak içerik değiştirilebilir
- Hoisting özelliğine sahiptir, ancak "temporal dead zone" nedeniyle tanımlanmadan önce kullanılamaz
Not: const
ile tanımlanan bir nesne veya dizinin içeriği değiştirilebilir, çünkü const
sadece değişkenin referansını sabit tutar, içeriğini değil.
const
, ES6 ile birlikte gelen ve sabit değerler tanımlamak için kullanılan bir anahtar kelimedir.
const
'un özellikleri:
- Blok kapsamına (block scope) sahiptir
- Aynı kapsamda aynı isimle yeniden tanımlanamaz
- İlkel veri tipleri için değeri değiştirilemez
- Nesneler ve diziler için referans değiştirilemez, ancak içerik değiştirilebilir
- Hoisting özelliğine sahiptir, ancak "temporal dead zone" nedeniyle tanımlanmadan önce kullanılamaz
Not: const
ile tanımlanan bir nesne veya dizinin içeriği değiştirilebilir, çünkü const
sadece değişkenin referansını sabit tutar, içeriğini değil.
Hangisini Kullanmalıyım?
Modern JavaScript geliştirmede, genellikle şu kurallar önerilir:
- const: Değeri değişmeyecek değişkenler için (varsayılan seçenek)
- let: Değeri değişecek değişkenler için
- var: Eski tarayıcı uyumluluğu gerekmedikçe kullanmaktan kaçının
İpucu: Bir değişken tanımlarken, önce const
kullanmayı deneyin. Eğer daha sonra değişkenin değerini değiştirmeniz gerekirse, let
'e geçebilirsiniz. Bu yaklaşım, kodunuzu daha güvenli ve öngörülebilir hale getirir.
Modern JavaScript geliştirmede, genellikle şu kurallar önerilir:
- const: Değeri değişmeyecek değişkenler için (varsayılan seçenek)
- let: Değeri değişecek değişkenler için
- var: Eski tarayıcı uyumluluğu gerekmedikçe kullanmaktan kaçının
İpucu: Bir değişken tanımlarken, önce const
kullanmayı deneyin. Eğer daha sonra değişkenin değerini değiştirmeniz gerekirse, let
'e geçebilirsiniz. Bu yaklaşım, kodunuzu daha güvenli ve öngörülebilir hale getirir.
İlkel Veri Tipleri (Primitive Data Types)
JavaScript'te yedi ilkel veri tipi vardır. Bunlar, doğrudan değerleri temsil eden ve nesne olmayan veri tipleridir.
Veri Tipi Açıklama Örnek String Metin verisi "Merhaba", 'Dünya', `JavaScript` Number Sayısal değerler (tam sayılar ve ondalıklı sayılar) 42, 3.14, -10 Boolean Mantıksal değerler true, false Null Kasıtlı olarak değer atanmamış null Undefined Tanımlanmamış değer undefined Symbol Benzersiz ve değiştirilemez değer (ES6) Symbol('id') BigInt Çok büyük tam sayılar (ES2020) 9007199254740991n
Bu derste, en sık kullanılan beş ilkel veri tipine (String, Number, Boolean, Null ve Undefined) odaklanacağız.
JavaScript'te yedi ilkel veri tipi vardır. Bunlar, doğrudan değerleri temsil eden ve nesne olmayan veri tipleridir.
Veri Tipi | Açıklama | Örnek |
---|---|---|
String | Metin verisi | "Merhaba", 'Dünya', `JavaScript` |
Number | Sayısal değerler (tam sayılar ve ondalıklı sayılar) | 42, 3.14, -10 |
Boolean | Mantıksal değerler | true, false |
Null | Kasıtlı olarak değer atanmamış | null |
Undefined | Tanımlanmamış değer | undefined |
Symbol | Benzersiz ve değiştirilemez değer (ES6) | Symbol('id') |
BigInt | Çok büyük tam sayılar (ES2020) | 9007199254740991n |
Bu derste, en sık kullanılan beş ilkel veri tipine (String, Number, Boolean, Null ve Undefined) odaklanacağız.
1. String
String, metin verilerini temsil eder. JavaScript'te stringler, tek tırnak ('), çift tırnak (") veya backtick (`) içinde yazılabilir.
String, metin verilerini temsil eder. JavaScript'te stringler, tek tırnak ('), çift tırnak (") veya backtick (`) içinde yazılabilir.
2. Number
Number, hem tam sayıları hem de ondalıklı sayıları temsil eder. JavaScript'te tüm sayılar 64-bit kayan noktalı sayılar olarak temsil edilir.
Number, hem tam sayıları hem de ondalıklı sayıları temsil eder. JavaScript'te tüm sayılar 64-bit kayan noktalı sayılar olarak temsil edilir.
3. Boolean
Boolean, mantıksal değerleri (true veya false) temsil eder. Genellikle karşılaştırma işlemlerinde ve koşullu ifadelerde kullanılır.
Boolean, mantıksal değerleri (true veya false) temsil eder. Genellikle karşılaştırma işlemlerinde ve koşullu ifadelerde kullanılır.
4. Null
Null, kasıtlı olarak "değer yok" veya "boş değer" anlamına gelir. Bir değişkene bilinçli olarak boş bir değer atamak istediğinizde kullanılır.
Uyarı: typeof null
ifadesi "object" döndürür, bu JavaScript'in bilinen bir hatasıdır. Null değerini kontrol etmek için ===
operatörünü kullanın.
Null, kasıtlı olarak "değer yok" veya "boş değer" anlamına gelir. Bir değişkene bilinçli olarak boş bir değer atamak istediğinizde kullanılır.
Uyarı: typeof null
ifadesi "object" döndürür, bu JavaScript'in bilinen bir hatasıdır. Null değerini kontrol etmek için ===
operatörünü kullanın.
5. Undefined
Undefined, bir değişkenin tanımlandığını ancak henüz bir değer atanmadığını gösterir. Ayrıca, bir fonksiyonun açıkça bir değer döndürmediği durumlarda da undefined döndürülür.
Undefined, bir değişkenin tanımlandığını ancak henüz bir değer atanmadığını gösterir. Ayrıca, bir fonksiyonun açıkça bir değer döndürmediği durumlarda da undefined döndürülür.
Tip Dönüşümleri
JavaScript, dinamik tipli bir dil olduğundan, değişkenlerin tipleri otomatik olarak dönüştürülebilir. Ancak, bazen manuel olarak tip dönüşümü yapmak isteyebilirsiniz.
JavaScript, dinamik tipli bir dil olduğundan, değişkenlerin tipleri otomatik olarak dönüştürülebilir. Ancak, bazen manuel olarak tip dönüşümü yapmak isteyebilirsiniz.
1. Otomatik Tip Dönüşümü (Type Coercion)
JavaScript, işlem yaparken otomatik olarak veri tiplerini dönüştürebilir. Bu özellik bazen beklenmedik sonuçlara yol açabilir.
Uyarı: Otomatik tip dönüşümü, kodunuzun anlaşılmasını zorlaştırabilir ve hatalara yol açabilir. Mümkün olduğunca açık ve net tip dönüşümleri yapmak daha iyidir.
JavaScript, işlem yaparken otomatik olarak veri tiplerini dönüştürebilir. Bu özellik bazen beklenmedik sonuçlara yol açabilir.
Uyarı: Otomatik tip dönüşümü, kodunuzun anlaşılmasını zorlaştırabilir ve hatalara yol açabilir. Mümkün olduğunca açık ve net tip dönüşümleri yapmak daha iyidir.
2. Manuel Tip Dönüşümü
JavaScript'te manuel tip dönüşümü yapmak için çeşitli yöntemler vardır:
JavaScript'te manuel tip dönüşümü yapmak için çeşitli yöntemler vardır:
String'e Dönüştürme
Number'a Dönüştürme
Boolean'a Dönüştürme
Not: JavaScript'te "falsy" (yanlış gibi değerlendirilen) değerler şunlardır: false
, 0
, ""
(boş string), null
, undefined
ve NaN
. Bunların dışındaki tüm değerler "truthy" (doğru gibi değerlendirilen) olarak kabul edilir.
Not: JavaScript'te "falsy" (yanlış gibi değerlendirilen) değerler şunlardır: false
, 0
, ""
(boş string), null
, undefined
ve NaN
. Bunların dışındaki tüm değerler "truthy" (doğru gibi değerlendirilen) olarak kabul edilir.
Template Literals (Şablon Dizgileri)
Template literals, ES6 ile gelen ve string oluşturmayı daha esnek ve okunabilir hale getiren bir özelliktir. Backtick (`) karakterleri arasında yazılır ve string içinde değişken kullanmayı, çok satırlı stringler oluşturmayı kolaylaştırır.
Template literals, ES6 ile gelen ve string oluşturmayı daha esnek ve okunabilir hale getiren bir özelliktir. Backtick (`) karakterleri arasında yazılır ve string içinde değişken kullanmayı, çok satırlı stringler oluşturmayı kolaylaştırır.
Temel Kullanım
Template Literals'ın Avantajları
- String içinde değişken kullanımı daha kolay ve okunabilir
- String içinde ifadeler kullanılabilir (örneğin,
${x + y}
) - Çok satırlı stringler oluşturmak için özel karakterlere gerek yok
- Daha az yazım hatası riski
- String içinde değişken kullanımı daha kolay ve okunabilir
- String içinde ifadeler kullanılabilir (örneğin,
${x + y}
) - Çok satırlı stringler oluşturmak için özel karakterlere gerek yok
- Daha az yazım hatası riski
Değişken Kapsamı (Scope)
Değişken kapsamı, bir değişkenin kodun hangi bölümlerinde erişilebilir olduğunu belirler. JavaScript'te üç tür kapsam vardır:
Değişken kapsamı, bir değişkenin kodun hangi bölümlerinde erişilebilir olduğunu belirler. JavaScript'te üç tür kapsam vardır:
1. Global Kapsam (Global Scope)
Global kapsamdaki değişkenler, kodun herhangi bir yerinden erişilebilir.
Global kapsamdaki değişkenler, kodun herhangi bir yerinden erişilebilir.
2. Fonksiyon Kapsamı (Function Scope)
Fonksiyon kapsamındaki değişkenler, sadece tanımlandıkları fonksiyon içinde erişilebilir. var
ile tanımlanan değişkenler fonksiyon kapsamına sahiptir.
Fonksiyon kapsamındaki değişkenler, sadece tanımlandıkları fonksiyon içinde erişilebilir. var
ile tanımlanan değişkenler fonksiyon kapsamına sahiptir.
3. Blok Kapsamı (Block Scope)
Blok kapsamındaki değişkenler, sadece tanımlandıkları blok içinde erişilebilir. let
ve const
ile tanımlanan değişkenler blok kapsamına sahiptir.
Uyarı: var
ile tanımlanan değişkenler blok kapsamına sahip değildir, fonksiyon kapsamına sahiptir. Bu, var
ile tanımlanan bir değişkenin, tanımlandığı bloğun dışında da erişilebilir olduğu anlamına gelir. Bu durum, beklenmedik hatalara yol açabilir.
Blok kapsamındaki değişkenler, sadece tanımlandıkları blok içinde erişilebilir. let
ve const
ile tanımlanan değişkenler blok kapsamına sahiptir.
Uyarı: var
ile tanımlanan değişkenler blok kapsamına sahip değildir, fonksiyon kapsamına sahiptir. Bu, var
ile tanımlanan bir değişkenin, tanımlandığı bloğun dışında da erişilebilir olduğu anlamına gelir. Bu durum, beklenmedik hatalara yol açabilir.
Kapsam Zinciri (Scope Chain)
JavaScript, bir değişkene erişmeye çalıştığında, önce mevcut kapsamda arar. Eğer bulamazsa, bir üst kapsamda aramaya devam eder. Bu süreç, değişken bulunana kadar veya global kapsama ulaşılana kadar devam eder.
Bu derste şunları öğrendik:
- JavaScript'te değişken tanımlamak için
var
, let
ve const
anahtar kelimeleri kullanılır - JavaScript'te yedi ilkel veri tipi vardır: String, Number, Boolean, Null, Undefined, Symbol ve BigInt
- JavaScript'te otomatik ve manuel tip dönüşümleri yapılabilir
- Template literals, string oluşturmayı daha esnek ve okunabilir hale getirir
- Değişken kapsamı, bir değişkenin kodun hangi bölümlerinde erişilebilir olduğunu belirler
Bir sonraki derste, JavaScript'te operatörler ve ifadeler konusunu inceleyeceğiz.
JavaScript, bir değişkene erişmeye çalıştığında, önce mevcut kapsamda arar. Eğer bulamazsa, bir üst kapsamda aramaya devam eder. Bu süreç, değişken bulunana kadar veya global kapsama ulaşılana kadar devam eder.
Bu derste şunları öğrendik:
- JavaScript'te değişken tanımlamak için
var
,let
veconst
anahtar kelimeleri kullanılır - JavaScript'te yedi ilkel veri tipi vardır: String, Number, Boolean, Null, Undefined, Symbol ve BigInt
- JavaScript'te otomatik ve manuel tip dönüşümleri yapılabilir
- Template literals, string oluşturmayı daha esnek ve okunabilir hale getirir
- Değişken kapsamı, bir değişkenin kodun hangi bölümlerinde erişilebilir olduğunu belirler
Bir sonraki derste, JavaScript'te operatörler ve ifadeler konusunu inceleyeceğiz.