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 սխալ: