Sobes.tech
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