Wyszukaj / o blogu

JavaScript - bloki i zakres

Opublikowano śro 22 kwietnia 2020 w javascript • 1 min read

Instrukcja blokowa (ang. blocks) - blok służy do grupowania wyrażeń i jest kodem zamkniętym w nawiasach klamrowych. Przykładem bloku kodu jest funkcja lub instrukcja if.

Zmienna znajduje się w zasięgu funkcji jeśli zamknięta jest w tym samym bloku kodu jak i wówczas gdy znajduje się po za nim.

Zakres/scope

Zakres (scope) jest kontekstem, w którym dana zmienna jest zadeklarowana. Zakres blokowy odnosi się do zmiennej, która jest dostępna w ramach bloku. Zmienne o globalnym zakresie zadeklarowane są po za blokiem.

    const droid = "R2D2"

    const droidSeeker = () => {
            return droid; // R2D2
    }

    console.log(droidSeeker()) // = R2D2

Gdy zmienna jest deklarowana wewnątrz bloku, wówczas jest osiągalna jedynie tam i jest zwana lokalną zmienną. Zmienna zadeklarowana globalnie jest dostępna w trakcie całości wykonywania się programu (zużycie pamięci + możliwość zmiany), w przypadku zmiennej lokalnej tak nie jest.

Zmiana zmiennej w funkcji

    let droid = "R2D2";

    const droidSeeker = () => {
    droid = "C3PO"; // Take note of this line of code
    console.log(droid);
    };

    logNum(); // > C3PO
    console.log(num); // > C3PO

Deklarowanie zmiennej w ramach bloku pozwala na tworzeni czystszego kodu, łatwiejszego w utrzymaniu (dana zmienna jest odpowiedzialna za wybrany fragment kodu), pozwala na tworzeni kodu w sposób modułowy.

    const droidSeeker = () => {
    const smallDroid = true;
    let droid = 'C3PO'; 
    if (smallDroid) {
    let droid = 'R2D2';
    console.log(droid); // R2D2
    }
    console.log(droid); // C3PO
    };

    console.log(droid); // ReferenceError

Global namespace - odnosi się do przestrzeni, w której przechowywane są nazwy zmiennych o globalnym zasięgu.


Źródła:

https://developer.mozilla.org/pl/docs/Web/JavaScript/Guide/Control_flow_and_error_handli

http://blog.nebula.us/13-javascript-closures-czyli-zrozumiec-i-wykorzystac-domkniecia