Zakres JavaScript
Zakres określa dostępność (widoczność) zmiennych.
JavaScript ma 3 rodzaje zakresu:
- Zakres blokowy
- Zakres funkcji
- Zakres globalny
Zakres bloku
Przed ES6 (2015) JavaScript miał tylko Global Scope i Function Scope .
ES6 wprowadził dwa ważne nowe słowa kluczowe JavaScript: let
i const
.
Te dwa słowa kluczowe zapewniają zakres bloku w JavaScript.
Do zmiennych zadeklarowanych wewnątrz bloku { } nie można uzyskać dostępu spoza bloku:
Przykład
{
let x = 2;
}
// x can NOT be used here
Zmienne zadeklarowane var
słowem kluczowym NIE mogą mieć zasięgu blokowego.
Dostęp do zmiennych zadeklarowanych wewnątrz bloku { } można uzyskać spoza bloku.
Przykład
{
var x = 2;
}
// x CAN be used here
Zakres lokalny
Zmienne zadeklarowane w funkcji JavaScript stają się LOKALNE dla funkcji.
Przykład
// code here can NOT use carName
function myFunction() {
let carName = "Volvo";
// code here CAN use carName
}
// code here can NOT use carName
Zmienne lokalne mają zakres funkcji :
Dostęp do nich można uzyskać tylko z poziomu funkcji.
Ponieważ zmienne lokalne są rozpoznawane tylko wewnątrz swoich funkcji, zmienne o tej samej nazwie mogą być używane w różnych funkcjach.
Zmienne lokalne są tworzone podczas uruchamiania funkcji i usuwane po zakończeniu funkcji.
Zakres funkcji
JavaScript ma zasięg funkcji: każda funkcja tworzy nowy zasięg.
Zmienne zdefiniowane wewnątrz funkcji nie są dostępne (widoczne) spoza funkcji.
Zmienne zadeklarowane za pomocą var
i let
są const
dość podobne, gdy są zadeklarowane wewnątrz funkcji.
Wszystkie mają zakres funkcji :
function myFunction() {
var carName = "Volvo";
// Function Scope
}
function myFunction() {
let carName = "Volvo"; //
Function Scope
}
function myFunction() {
const carName = "Volvo"; //
Function Scope
}
Globalne zmienne JavaScript
Zmienna zadeklarowana poza funkcją staje się GLOBALNA .
Przykład
let carName = "Volvo";
// code here can use carName
function myFunction() {
// code here can also use carName
}
Zmienna globalna ma zasięg globalny :
Wszystkie skrypty i funkcje na stronie internetowej mają do niej dostęp.
Zakres globalny
Zmienne zadeklarowane globalnie (poza dowolną funkcją) mają zasięg globalny .
Dostęp do zmiennych globalnych można uzyskać z dowolnego miejsca w programie JavaScript.
Zmienne zadeklarowane za pomocą var
i let
są const
dość podobne, gdy są zadeklarowane poza blokiem.
Wszystkie mają zasięg globalny :
var x = 2;
// Global scope
let x = 2; //
Global scope
const x = 2; //
Global scope
Zmienne JavaScript
W JavaScript obiekty i funkcje są również zmiennymi.
Zakres określa dostępność zmiennych, obiektów i funkcji z różnych części kodu.
Automatycznie globalnie
Jeśli przypiszesz wartość do zmiennej, która nie została zadeklarowana, automatycznie stanie się ona zmienną GLOBALNĄ .
Ten przykład kodu zadeklaruje zmienną globalną carName
, nawet jeśli wartość jest przypisana wewnątrz funkcji.
Przykład
myFunction();
// code here can use carName
function myFunction() {
carName = "Volvo";
}
tryb ścisły
Wszystkie nowoczesne przeglądarki obsługują JavaScript w „Trybie ścisłym”.
Więcej o tym, jak używać trybu ścisłego, dowiesz się w kolejnym rozdziale tego samouczka.
W „Trybie ścisłym” niezadeklarowane zmienne nie są automatycznie globalne.
Zmienne globalne w HTML
W przypadku JavaScript zasięgiem globalnym jest środowisko JavaScript.
W HTML zasięgiem globalnym jest obiekt window.
Zmienne globalne zdefiniowane var
słowem kluczowym należą do obiektu window:
Przykład
var carName = "Volvo";
// code here
can use window.carName
Zmienne globalne zdefiniowane let
słowem kluczowym nie należą do obiektu window:
Przykład
let carName = "Volvo";
// code here can not use window.carName
Ostrzeżenie
NIE twórz zmiennych globalnych, chyba że zamierzasz.
Twoje zmienne globalne (lub funkcje) mogą nadpisywać zmienne (lub funkcje) okna.
Każda funkcja, w tym obiekt window, może nadpisać twoje globalne zmienne i funkcje.
Czas życia zmiennych JavaScript
Czas życia zmiennej JavaScript rozpoczyna się w momencie jej zadeklarowania.
Zmienne funkcji (lokalne) są usuwane po zakończeniu funkcji.
W przeglądarce internetowej zmienne globalne są usuwane po zamknięciu okna przeglądarki (lub karty).
Argumenty funkcji
Argumenty funkcji (parametry) działają jako zmienne lokalne wewnątrz funkcji.