Sobes.tech
Junior

Маъзои (scope) тағйирёбандаҳо дар JavaScript чист?

sobes.tech AI

Ҷавоб аз AI

Ҳудудлик, ўзгарувчилар, функциялар ва объектларнинг коднинг муайян қисмида мавжудлигини белгилайди.

JavaScriptда турли хил ҳудудлар мавжуд:

  • Жаҳон ҳудуди (Global Scope): Ҳар қандай функция ёки блокдан ташқари эълон қилинган ўзгарувчилар, коднинг ҳар қандай жойидан кириш мумкин.
  • Функция ҳудуди (Function Scope): ES6дан олдин, функцияда (ўзгартирилган) эълон қилинган ўзгарувчилар, фақат шу функцияда ва унинг ичидаги функцияларда мавжуд.
  • Блок ҳудуди (Block Scope): let ва const ёрдамида блоклар (масалан, {} ёки циклларда) ичида эълон қилинган ўзгарувчилар, фақат шу блокда мавжуд.

Масалан:

// Жаҳон ҳудуди
let globalVar = "Мен жаҳонман";

function someFunction() {
  // Функция ҳудуди (ES6дан олдин)
  var functionVar = "Мен функцияда";
  console.log(globalVar); // Жаҳон ўзгарувчиси мавжуд

  if (true) {
    // Блок ҳудуди (let ва const учун)
    let blockVar = "Мен блокда";
    console.log(functionVar); // Функция ўзгарувчиси мавжуд
    console.log(blockVar); // Блок ўзгарувчиси мавжуд
  }

  // console.log(blockVar); // Хатолик: blockVar бу ерда мавжуд эмас
}

someFunction();
// console.log(functionVar); // Хатолик: functionVar бу ерда мавжуд эмас

Калит сўзлар, ўзгарувчиларни эълон қилиш ва уларнинг ҳудудга таъсири:

Калит сўз ES6дан олдин ҳудуд ES6дан кейин ҳудуд
var Функционал Функционал
let - Блок ҳудуди
const - Блок ҳудуди

Ҳудудни тушуниш, ўзгарувчиларнинг номларини келишмовчиликларини олдини олиш ва тоза, олдиндан айтилган код ёзиш учун жуда муҳимдир.