Sobes.tech
Junior

Czym jest zakres (scope) zmiennych w JavaScript?

sobes.tech AI

Odpowiedź od AI

Zakres definiuje dostępność zmiennych, funkcji i obiektów w określonej części kodu.

W JavaScript istnieje kilka typów zakresów:

  • Zakres globalny (Global Scope): Zmienne zadeklarowane poza funkcjami lub blokami są dostępne z dowolnego miejsca w kodzie.
  • Zakres funkcji (Function Scope): Zmienne zadeklarowane wewnątrz funkcji (przed ES6) są dostępne tylko w tej funkcji i funkcjach zagnieżdżonych.
  • Zakres blokowy (Block Scope): Zmienne zadeklarowane za pomocą let i const wewnątrz bloków (np. {} lub pętli) są dostępne tylko w tym bloku.

Przykład:

// Zakres globalny
let globalVar = "Jestem globalny";

function someFunction() {
  // Zakres funkcji (przed ES6)
  var functionVar = "Jestem w funkcji";
  console.log(globalVar); // Dostępna zmienna globalna

  if (true) {
    // Zakres blokowy (dla let i const)
    let blockVar = "Jestem w bloku";
    console.log(functionVar); // Dostępna zmienna funkcji
    console.log(blockVar); // Dostępna zmienna blokowa
  }

  // console.log(blockVar); // Błąd: blockVar nie jest dostępne tutaj
}

someFunction();
// console.log(functionVar); // Błąd: functionVar nie jest dostępne tutaj

Słowa kluczowe do deklarowania zmiennych i ich wpływ na zakres:

Słowo kluczowe Zakres przed ES6 Zakres po ES6
var Funkcyjny Funkcyjny
let - Blokowy
const - Blokowy

Zrozumienie zakresu jest kluczowe, aby unikać konfliktów nazw zmiennych i pisać czysty, przewidywalny kod.