Sobes.tech
Junior

JavaScriptте өзгөрмөлөрдү кандай жолдор менен жарыялоо мүмкүн? Бул ыкмалардын айырмачылыктарын атаңыз.

sobes.tech AI

AIден жооп

JavaScriptте өзгөрмөлөрдү үч жол менен жарыялоо мүмкүн: var, let, const.

Алардын айырмачылыктары:

Айырма var let const
Көрүнүү чөйрөсү Функциялык Блоктук Блоктук
Өзгөртүү мүмкүнчүлүгү Мүмкүн Мүмкүн Мүмкүн эмес
Hoisting Жариялоо жана баштапкы маанини undefined кылып көтөрөт Жариялоо көтөрүлөт, бирок баштапкы мааниси жок Жариялоо көтөрүлөт, бирок баштапкы мааниси жок

Мисалдар:

// var
function exampleVar() {
  var x = 10; // Функциялык чөйрө
  if (true) {
    var x = 20; // Бир функция ичинде кайра аныктоо мүмкүн
    console.log(x); // 20
  }
  console.log(x); // 20 (ifтен чыккан өзгөрмө x жеткиликтүү)
}

console.log(x); // Ката: ReferenceError: x аныкталган эмес (x функциядан тышкары көрүнбөйт)

// Hoisting var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
  let y = 10; // Блоктук чөйрө
  if (true) {
    let y = 20; // Бир эле блок ичинде кайра аныктоо мүмкүн эмес
    console.log(y); // 20 (башка y өзгөрмөсү)
  }
  console.log(y); // 10 (блоктун сыртына чыккан y)
}

console.log(y); // Ката: ReferenceError: y аныкталган эмес

// Hoisting let
// console.log(b); // Ката: ReferenceError: 'b' алдын ала жеткиликтүү эмес
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
  const z = 10; // Блоктук чөйрө
  // z = 20; // Ката: TypeError: Константа өзгөрмөсүнө өзгөртүү мүмкүн эмес
  if (true) {
    const z = 20; // Бир эле блок ичинде кайра аныктоо мүмкүн эмес
    console.log(z); // 20 (башка z өзгөрмөсү)
  }
  console.log(z); // 10 (блоктун сыртына чыккан z)
}

console.log(z); // Ката: ReferenceError: z аныкталган эмес

// Hoisting const
// console.log(c); // Ката: ReferenceError: 'c' алдын ала жеткиликтүү эмес
const c = 5;
console.log(c); // 5

// `const` менен жарыяланган объекттер жана массивдердин мазмұнын өзгөртүүгө болот
const obj = { аты: 'Тест' };
obj.аты = 'Жаңы Тест'; // Мүмкүн
// obj = { аты: 'Башка Тест' }; // Ката