JavaScript Değişkenleri ve Veri Türleri: Derinlemesine İnceleme

JavaScript, dinamik bir programlama dili olduğundan, veri türleri ve değişkenler çok esnek ve güçlü bir şekilde kullanılabilir. Bu yazıda, JavaScript'teki değişkenleri, veri türlerini ve her birinin nasıl çalıştığını detaylıca inceleyeceğiz.


1. JavaScript'te Değişkenler

Değişkenler, programlarımızda veri saklamak için kullanılan temel yapı taşlarıdır. JavaScript'te değişkenler üç şekilde tanımlanabilir: var, let, ve const.

a. var ile Değişken Tanımlamak

var JavaScript'in ilk değişken tanımlama yöntemidir ve ES6'dan önce yaygın olarak kullanılıyordu. Ancak, var ile tanımlanan değişkenler, fonksiyonel kapsam (function scope) veya global kapsamda geçerli olur. Bunun anlamı, bir fonksiyon içinde var ile tanımlanan değişkenler yalnızca o fonksiyon içinde geçerli iken, fonksiyon dışında tanımlanan değişkenler global olarak erişilebilir olur.

  • Hoisting: var ile tanımlanan değişkenler hoisting özelliğine sahiptir, yani tanımlama kodu çalışmadan önce bile, değişkenin var olduğu kabul edilir. Ancak değeri henüz atanmamışsa, değeri undefined olarak kabul edilir.

Örnek:

javascript
console.log(a); // undefined var a = 5; console.log(a); // 5

b. let ile Değişken Tanımlamak

ES6 ile tanıtılan let, var'a göre daha modern bir alternatif olup, blok kapsamına (block scope) sahiptir. Yani, let ile tanımlanan bir değişken yalnızca tanımlandığı blok içinde geçerlidir.

  • Hoisting: let de hoisting özelliğine sahip olmakla birlikte, bu değişkenin kullanılması için tanımlanması gereklidir. Aksi takdirde, "temporal dead zone" (TDZ) hatası alırsınız.

Örnek:

javascript
let b = 10; console.log(b); // 10 // Hoisting hatası console.log(c); // ReferenceError: Cannot access 'c' before initialization let c = 20;

c. const ile Değişken Tanımlamak

const, bir değişkenin sabit olduğunu ve bir kez atandıktan sonra değiştirilemeyeceğini belirtir. const ile tanımlanan değişkenlerin değeri sabittir ve değiştirilemez. Ancak, bir nesne veya dizi gibi referans tipleri tanımlanıyorsa, içeriği değiştirilebilir, fakat değişkenin kendisi yeniden atanamaz.

  • Hoisting: const da hoisting özelliğine sahip olmasına rağmen, yine kullanımdan önce tanımlanmış olmalıdır.

Örnek:

javascript
const d = 30; console.log(d); // 30 // d'yi değiştiremeyiz // d = 40; // TypeError: Assignment to constant variable. const e = [1, 2, 3]; e.push(4); // Bu geçerli çünkü dizinin içeriği değiştirilebiliyor. console.log(e); // [1, 2, 3, 4]

2. JavaScript Veri Türleri

JavaScript'te veri türleri, değişkenlere atanabilecek verilerin türünü belirler. Veri türleri iki ana kategoriye ayrılabilir: Primitif (Değer) Veri Türleri ve Referans Veri Türleri.

a. Primitif Veri Türleri

Primitif veri türleri, doğrudan değer saklayan veri türleridir. JavaScript'teki primitif veri türleri şunlardır:

  • Number: Sayısal değerleri temsil eder. Tam sayılar ve ondalıklı sayılar (float) dahil olmak üzere tüm sayılar Number türündedir.

    javascript
    let num = 42; let decimal = 3.14;
  • String: Metin verilerini temsil eder. Tek tırnak (') veya çift tırnak (") içinde tanımlanabilir.

    javascript
    let name = "Ali"; let greeting = 'Merhaba, dünya!';
  • Boolean: true (doğru) veya false (yanlış) değerlerini temsil eder.

    javascript
    let isActive = true; let isValid = false;
  • Undefined: Tanımlanmamış bir değeri temsil eder. Bir değişken tanımlandığında ancak ona bir değer atanmadığında undefined olur.

    javascript
    let a; console.log(a); // undefined
  • Null: Bir değerin eksik olduğunu belirtir. null, bilinçli olarak boş bir değeri ifade eder.

    javascript
    let user = null;
  • Symbol (ES6 ile tanıtıldı): Benzersiz ve değiştirilemez bir değeri temsil eder.

    javascript
    let sym = Symbol('description');

b. Referans Veri Türleri

Referans veri türleri, verilerin kendisini değil, o veriye işaret eden referansı saklarlar. JavaScript'teki referans veri türleri şunlardır:

  • Object: Anahtar-değer çiftlerini temsil eder. Nesneler, JavaScript'teki en yaygın veri türlerinden biridir ve genellikle karmaşık veri yapılarını saklamak için kullanılır.

    javascript
    let person = { name: "Ali", age: 25, greet: function() { console.log("Merhaba!"); } };
  • Array: Sıralı liste yapısını temsil eder. Diziler, farklı veri türlerini saklayabilir ve sıralı erişim sağlar.

    javascript
    let numbers = [1, 2, 3, 4, 5];
  • Function: JavaScript'te fonksiyonlar da bir türdür ve kendi başlarına değerlerdir.

    javascript
    function greet() { console.log("Merhaba!"); }

3. Veri Türleri Arasındaki Farklar ve Dönüşümler

JavaScript'te veri türleri arasında dönüşümler mümkündür. Bu dönüşümler, türlerin birbirine dönüştürülmesini sağlar. İki tür dönüşümü vardır:

  • Otomatik Tür Dönüşümü (Implicit Type Coercion): JavaScript, belirli işlemler sırasında veri türlerini otomatik olarak dönüştürebilir. Örneğin, bir sayı ile bir string toplandığında, sayı string'e dönüştürülür.

    javascript
    let result = "5" + 1; // "51" (string)
  • Manuel Tür Dönüşümü (Explicit Type Conversion): Tür dönüşümünü manuel olarak yapmak için String(), Number(), ve Boolean() gibi fonksiyonlar kullanılır.

    javascript
    let num = Number("10"); // 10 (sayı) let str = String(123); // "123" (string) let bool = Boolean(0); // false

4. Sonuç

JavaScript'teki değişkenler ve veri türleri, dilin esnekliğini ve gücünü gösterir. Farklı veri türlerini ve değişken tanımlama yöntemlerini iyi anlamak, JavaScript uygulamalarında daha etkili kod yazmanıza yardımcı olacaktır. Kodunuzda doğru veri türlerini seçmek ve uygun değişken tanımlama yöntemlerini kullanmak, hem hataları azaltır hem de performansı iyileştirir.