JavaScript’te “var”, “let” ve “const” Arasındaki Farklar Nelerdir?

JavaScript’te var, let ve const, değişkenleri tanımlamak için kullanılan anahtar kelimelerdir. Ancak aralarında önemli farklar bulunur. Bu farklar, genel hatlarıyla kapsam (scope), hoisting, ve yeniden atama kuralları üzerine kuruludur.

Kapsam (Scope) Farkları

var: Fonksiyon kapsamlıdır (function-scoped). Yani, var ile tanımlanan bir değişken, tanımlandığı fonksiyon içerisinde her yerden erişilebilir. Fonksiyon dışında tanımlanırsa, global kapsamda olur. Örneğin:

if (true) {
  var x = 5;
}
console.log(x); // 5 çıktısını verir.

function myFunction() {
  var insideVar = "Fonksiyon içinde tanımlandı";
  console.log(insideVar); // Fonksiyon içinde tanımlandı
}

myFunction();
console.log(insideVar); // Hata verir, insideVar tanımlı değil

var outsideVar = "Global kapsamda tanımlandı";

function anotherFunction() {
  console.log(outsideVar); // Global kapsamda tanımlandı
}

anotherFunction();
console.log(outsideVar); // Global kapsamda tanımlandı

let ve const: Blok kapsamlıdır (block-scoped). Yani, bu anahtar kelimelerle tanımlanan değişkenler, sadece tanımlandıkları blok içerisinde (örneğin bir if bloğu, for döngüsü) erişilebilir. Örneğin:

if (true) {
  let y = 5;
}
console.log(y); // Hata verir, y tanımlı değil.

Hoisting Farkları

  • var: Hoisting’e tabidir. var ile tanımlanan değişkenler, tanımlı oldukları kapsamın başına çıkarılır (hoisted), ancak değer ataması yapılmaz.
  • let ve const: Hoisting’e teknik olarak tabidirler, ama “temporal dead zone” nedeniyle, tanımlandıkları satıra kadar erişilemezler.
console.log(varVariable); // undefined
var varVariable = "Var ile tanımlanmış";
console.log(varVariable); // Var ile tanımlanmış

console.log(letVariable); // Hata verir: Cannot access 'letVariable' before initialization
let letVariable = "Let ile tanımlanmış";
console.log(letVariable); // Let ile tanımlanmış

console.log(constVariable); // Hata verir: Cannot access 'constVariable' before initialization
const constVariable = "Const ile tanımlanmış";
console.log(constVariable); // Const ile tanımlanmış

Yeniden Atama ve Yeniden Tanımlama

var: Hem yeniden atamaya hem de yeniden tanımlamaya izin verir.

var z = 1;
var z = 2; // Geçerli
z = 3;     // Geçerli

let: Yeniden atamaya izin verir, ama aynı kapsam içinde yeniden tanımlanamaz.

let a = 1;
// let a = 2; // Hata verir, a zaten tanımlı
a = 3;       // Geçerli

const: Hem yeniden atamaya hem de yeniden tanımlamaya izin vermez. Sabit bir değer tanımlamak için kullanılır.

const b = 1;
// const b = 2; // Hata verir, b zaten tanımlı
// b = 3;       // Hata verir, b sabittir ve değiştirilemez

Bu farklar, var, let, ve const‘ın kullanım yerlerini ve amaçlarını belirler. Genel olarak, let ve const, modern JavaScript kodlarında tercih edilir çünkü daha katı kapsam kuralları sayesinde yanlışlıkla yapılabilecek hataları azaltırlar. const, değişmeyecek değerler için kullanılırken; let, değeri değişebilecek değişkenler için kullanılır. var ise eski JavaScript kodlarında sıkça rastlanır ve daha esnek bir kapsam ve yeniden tanımlama imkanı sunar.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu