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