Junior
JavaScriptda o'zgaruvchilarni qanday usullar bilan e'lon qilish mumkin? Bu usullar orasidagi farqlarni nomlang.
sobes.tech AI
AIdan javob
JavaScriptda o'zgaruvchilarni uch xil usulda e'lon qilish mumkin: var, let, const.
Ular orasidagi farqlar:
| Farq | var |
let |
const |
|---|---|---|---|
| Doira | Funktsional | Blok | Blok |
| Qayta e'lon qilish | Mümkin | Mümkin | Mümkin emas |
| Qayta tayinlash | Mümkin | Mümkin | Mümkin emas |
| Hoisting | E'lon qilish va boshlang'ich qiymatni undefined ga ko'taradi |
E'lon qilishni ko'taradi, ammo boshlang'ich qiymatni emas | E'lon qilishni ko'taradi, ammo boshlang'ich qiymatni emas |
Misollar:
// var
function misolVar() {
var x = 10; // Funktsional doira
if (true) {
var x = 20; // Bir xil funktsiya ichida qayta e'lon qilish mumkin
console.log(x); // 20
}
console.log(x); // 20 (if ichidagi x bu yerda mavjud)
}
console.log(x); // Xato: ReferenceError: x ta'riflanmagan (x funktsiya tashqarisida ko'rinmaydi)
// Hoisting bilan var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function misolLet() {
let y = 10; // Blok doira
if (true) {
let y = 20; // Bir xil blokda qayta e'lon qilish mumkin emas
console.log(y); // 20 (boshqa y o'zgaruvchisi)
}
console.log(y); // 10 (blok tashqarisidagi y)
}
console.log(y); // Xato: ReferenceError: y ta'riflanmagan
// Hoisting bilan let
// console.log(b); // Xato: ReferenceError: 'b' ga kirish mumkin emas, boshlanishidan oldin
let b = 5;
console.log(b); // 5
// const
function misolConst() {
const z = 10; // Blok doira
// z = 20; // Xato: TypeError: Doimiy o'zgaruvchaga tayinlash. (Qayta tayinlash mumkin emas)
if (true) {
const z = 20; // Bir xil blokda qayta e'lon qilish mumkin emas
console.log(z); // 20 (boshqa z o'zgaruvchisi)
}
console.log(z); // 10 (blok tashqarisidagi z)
}
console.log(z); // Xato: ReferenceError: z ta'riflanmagan
// Hoisting bilan const
// console.log(c); // Xato: ReferenceError: 'c' ga kirish mumkin emas, boshlanishidan oldin
const c = 5;
console.log(c); // 5
// Const bilan e'lon qilingan obyektlar va massivlarning mazmuni o'zgartirilishi mumkin
const obj = { name: 'Test' };
obj.name = 'Yangi Test'; // Mümkin
// obj = { name: 'Boshqa Test' }; // Xato