Junior
Какво е обхват в JavaScript?
sobes.tech AI
Отговор от AI
Обхватът (Scope) в JavaScript е контекстът, в който са дефинирани и достъпни променливите и функциите.
Проще казано, той определя къде в кода може да се отнася към променлива или функция.
Съществуват няколко типа обхвати:
- Глобален обхват (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.