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.