Czym jest zakres czyli scope w JavaScript?

Zakres (ang. scope) w JavaScript określa kontekst wykonania, w którym zmienne, stałe, i inne wyrażenia są dostępne. Rozumienie jak działa zakres jest kluczowe dla efektywnego programowania i unikania błędów związanych z nieoczekiwanym dostępem lub modyfikacjami danych.

Globalny zakres (Global Scope)

Kiedy zmienna jest zdefiniowana na najwyższym poziomie kodu, jest dostępna globalnie w całym skrypcie. Oznacza to, że każda funkcja lub blok kodu może uzyskać do niej dostęp.

let globalVariable = "Jestem globalna wartość";

function showGlobalVariable() {
    console.log(globalVariable); // "Jestem globalna wartość"
                                 // gdyż funkcja ma dostęp do globalnej 
                                 // wartości
}

showGlobalVariable();

Lokalny zakres (Local Scope) / Zakres funkcji (Function Scope)

Zmienne zdefiniowane wewnątrz funkcji są dostępne tylko w obrębie tej funkcji. To znaczy, że są one izolowane od reszty kodu programu.

function showLocalVariable() {
    let localVariable = "Jestem lokalna";
    console.log(localVariable); // "Jestem lokalna"
}

showLocalVariable();
// console.log(localVariable); // Błąd: localVariable is not defined
// błąd bo nie ma dostępu do lokalnych zmiennych poza funkcją

Zakres leksykalny (Lexical Scope)

Funkcje zagnieżdżone są świadome zakresu funkcji, w których zostały zdefiniowane. To znaczy, że funkcja wewnętrzna ma dostęp do zmiennych z funkcji zewnętrznej.

function outerFunction() {
    let outerVariable = "Jestem zewnętrzna";

    function innerFunction() {
        console.log(outerVariable); // "Jestem zewnętrzna"
        // zagnieżdzone funkcje mają dostęp do lokalnej zmiennej poziom wyżej
    }

    innerFunction();
}

outerFunction();

Podsumowanie

Zrozumienie zakresu w JavaScript jest fundamentem do pisania czystego i bezpiecznego kodu. Pozwala na lepszą organizację struktury programu, unikanie kolizji nazw i błędów związanych z nieprawidłowym dostępem do zmiennych.

Jeżeli chcesz przyśpieszyć swoją naukę chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego koncepcji.

 

 

 

 

Scroll to Top