Sobes.tech
Junior

JavaScript-də dəyişənləri elan etməyin hansı yolları var? Bu metodlar arasındakı fərqləri qeyd edin.

sobes.tech Süni İntellekt

AI-dan cavab

JavaScript-də dəyişənlər üç yolla elan edilə bilər: var, let, const.

Aralarındakı fərqlər:

Fərq var let const
Sahə Funksional Blok Blok
Yenidən elan etmək Mümkündür Mümkündür Mümkündür deyil
Yenidən təyin etmək Mümkündür Mümkündür Mümkündür deyil
Hoisting Deklarasiyanı və ilkinləşdirməni undefined-ə qaldırır Deklarasiyanı qaldırır, amma ilkinləşdirməni yox Deklarasiyanı qaldırır, amma ilkinləşdirməni yox

Nümunələr:

// var
function nümunəVar() {
  var x = 10; // Funksional sahə
  if (true) {
    var x = 20; // Eyni funksiyada yenidən elan etmək mümkündür
    console.log(x); // 20
  }
  console.log(x); // 20 (if-dən olan x burada mövcuddur)
}

console.log(x); // Xəta: ReferenceError: x təyin olunmayıb (x funksiyanın xaricində görünmür)

// Hoisting ilə var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function nümunəLet() {
  let y = 10; // Blok sahəsi
  if (true) {
    let y = 20; // Eyni blokda yenidən elan mümkün deyil
    console.log(y); // 20 (başqa y dəyişəni)
  }
  console.log(y); // 10 (blok xaricində y)
}

console.log(y); // Xəta: ReferenceError: y təyin olunmayıb

// Hoisting ilə let
// console.log(b); // Xəta: ReferenceError: 'b'ə giriş mümkün deyil, ilkinləşdirmədən əvvəl
let b = 5;
console.log(b); // 5
// const
function nümunəConst() {
  const z = 10; // Blok sahəsi
  // z = 20; // Xəta: TypeError: Sabit dəyişənə təyin etmək. (Yenidən təyin mümkün deyil)
  if (true) {
    const z = 20; // Eyni blokda yenidən elan mümkün deyil
    console.log(z); // 20 (başqa z dəyişəni)
  }
  console.log(z); // 10 (blok xaricində z)
}

console.log(z); // Xəta: ReferenceError: z təyin olunmayıb

// Hoisting ilə const
// console.log(c); // Xəta: ReferenceError: 'c'ə giriş mümkün deyil, ilkinləşdirmədən əvvəl
const c = 5;
console.log(c); // 5

// Const ilə elan edilən obyekt və massivlərin içəriyi dəyişdirilə bilər
const oby = { name: 'Test' };
oby.name = 'Yeni Test'; // Permissible
// oby = { name: 'Başqa Test' }; // Xəta