Sobes.tech
Junior

JavaScript'te değişkenleri tanımlamanın hangi yolları vardır? Bu yöntemler arasındaki farkları belirtiniz.

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript'te değişkenler üç şekilde bildirilebilir: var, let, const.

Aralarındaki farklar:

Fark var let const
Kapsam Fonksiyonel Blok Blok
Yeniden tanımlama Mümkün Mümkün Mümkün değil
Yeniden atama Mümkün Mümkün Mümkün değil
Hoisting Deklarasyonu ve başlatmayı undefined yapar Deklarasyonu yukarı taşır, ama başlatmayı taşımaz Deklarasyonu yukarı taşır, ama başlatmayı taşımaz

Örnekler:

// var
function ornekVar() {
  var x = 10; // Fonksiyonel kapsam
  if (true) {
    var x = 20; // Aynı fonksiyon içinde yeniden tanımlama mümkün
    console.log(x); // 20
  }
  console.log(x); // 20 (if içindeki x burada erişilebilir)
}

console.log(x); // Hata: ReferenceError: x tanımlı değil (x fonksiyon dışında görünür değil)

// Hoisting var ile
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function ornekLet() {
  let y = 10; // Blok kapsamı
  if (true) {
    let y = 20; // Aynı blok içinde yeniden tanımlama mümkün değil
    console.log(y); // 20 (başka bir y değişkeni)
  }
  console.log(y); // 10 (blok dışındaki y değişkeni)
}

console.log(y); // Hata: ReferenceError: y tanımlı değil

// Hoisting let ile
// console.log(b); // Hata: ReferenceError: 'b'ye erişim mümkün değil, tanımlamadan önce
let b = 5;
console.log(b); // 5
// const
function ornekConst() {
  const z = 10; // Blok kapsamı
  // z = 20; // Hata: TypeError: Sabit değişkene atama. (Yeniden atama mümkün değil)
  if (true) {
    const z = 20; // Aynı blok içinde yeniden tanımlama mümkün değil
    console.log(z); // 20 (başka bir z değişkeni)
  }
  console.log(z); // 10 (blok dışındaki z değişkeni)
}

console.log(z); // Hata: ReferenceError: z tanımlı değil

// Hoisting const ile
// console.log(c); // Hata: ReferenceError: 'c'ye erişim mümkün değil, tanımlamadan önce
const c = 5;
console.log(c); // 5

// Const ile tanımlanan nesne ve dizilerin içeriği değiştirilebilir
const obj = { name: 'Test' };
obj.name = 'Yeni Test'; // Mümkün
// obj = { name: 'Başka Test' }; // Hata