Sobes.tech
Junior

JavaScriptте чөйрө деген эмне?

sobes.tech AI

AIден жооп

JavaScriptтеги көрүнүш чөйрөсү (Scope) — бул өзгөрмөлөр жана функциялар аныкталган жана жеткиликтүү болгон контекст.

Жөнөкөй айтканда, ал коддо өзгөрмө же функцияга кайсыл жерден шилтеме жасоого болорун аныктайт.

Көптөгөн түрлөрү бар:

  • Глобалдык көрүнүш чөйрөсү (Global Scope): Бардык функциялардан тышкары жарыяланган өзгөрмөлөр глобалдык көрүнүш чөйрөсүндө болот. Алар коддун каалаган жеринен жеткиликтүү.
    // Глобалдык өзгөрмө
    let globalVar = "Мен бардык жерде көрүнөм";
    
    function showGlobal() {
      console.log(globalVar); // функцияда жеткиликтүү
    }
    
    showGlobal();
    
  • Жергиликтүү (функциялык) көрүнүш чөйрөсү (Local/Function Scope): Функциянын ичинде жарыяланган өзгөрмөлөр ошол функциянын жергиликтүү көрүнүш чөйрөсүндө болот. Алар гана ошол функцияда жана анын ички функцияларында жеткиликтүү, сыртта эмес.
    function showLocal() {
      // Жергиликтүү өзгөрмө
      let localVar = "Мен гана ушул жерде көрүнөм";
      console.log(localVar);
    }
    
    showLocal();
    // console.log(localVar); // ката: localVar аныкталган эмес
    
  • Блоктук көрүнүш чөйрөсү (Block Scope): ES6 (ES2015) менен let жана const киргизилгенден кийин пайда болду. {} мүчөлөрүнүн ичинде жарыяланган let же const менен өзгөрмөлөр блоктук көрүнүш чөйрөсүнө ээ. var менен жарыяланган өзгөрмөлөр блоктук көрүнүшкө ээ эмес.
    if (true) {
      // Блоктук көрүнүштөгү өзгөрмө
      let blockVar = "Мен ушул блокто гана көрүнөм";
      console.log(blockVar);
    }
    
    // console.log(blockVar); // ката: blockVar аныкталган эмес
    
    for (let i = 0; i < 2; i++) {
      // Циклдин блоктук көрүнүшүндөгү өзгөрмө
      console.log(i);
    }
    
    // console.log(i); // ката: i аныкталган эмес (эгер `let` колдонулса)
    

Маанилүү, ошондой эле Көрүнүш чынжыры (Scope Chain) түшүнүгүн түшүнүү керек. JavaScript өзгөрмөнүн маанисин табуу үчүн, ал биринчи учурда учурдагы көрүнүш чөйрөсүн карайт. Эгер ал таба албаса, сырткы (ата-эне) көрүнүш чөйрөсүнө өтөт жана ошондой эле, глобалдык көрүнүш чөйрөсүнө чейин. Эгер ал дагы таба албаса, ReferenceError ката чыгат.