Podnoszenie JavaScript
Podnoszenie jest domyślnym zachowaniem JavaScript polegającym na przenoszeniu deklaracji na górę.
Deklaracje JavaScript są podnoszone
W JavaScript zmienną można zadeklarować po jej użyciu.
Innymi słowy; zmienna może być używana przed jej zadeklarowaniem.
Przykład 1 daje taki sam wynik jak Przykład 2 :
Przykład 1
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
var x; // Declare x
Przykład 2
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
Aby to zrozumieć, musisz zrozumieć termin „podnoszenie”.
Podnoszenie to domyślne zachowanie JavaScript polegające na przenoszeniu wszystkich deklaracji na górę bieżącego zakresu (na górę bieżącego skryptu lub bieżącej funkcji).
Słowa kluczowe let i const
Zmienne zdefiniowane za pomocą let
i const
są podnoszone na górę bloku, ale nie są inicjowane .
Znaczenie: Blok kodu zna zmienną, ale nie może być użyty, dopóki nie zostanie zadeklarowany.
Użycie let
zmiennej przed jej zadeklarowaniem spowoduje powstanie
ReferenceError
.
Zmienna znajduje się w „czasowej martwej strefie” od początku bloku do momentu jej zadeklarowania:
Przykład
Spowoduje toReferenceError
:
carName = "Volvo";
let carName;
Użycie const
zmiennej przed jej zadeklarowaniem jest błędem składniowym, więc kod po prostu się nie uruchomi.
Przykład
Ten kod się nie uruchomi.
carName = "Volvo";
const carName;
Przeczytaj więcej o let i const w JS Let/Const .
Inicjalizacje JavaScript nie są podnoszone
JavaScript wyświetla tylko deklaracje, a nie inicjalizacje.
Przykład 1 nie daje takiego samego wyniku jak Przykład 2 :
Przykład 1
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
Przykład 2
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize y
Czy to ma sens, że y jest niezdefiniowane w ostatnim przykładzie?
Dzieje się tak, ponieważ tylko deklaracja (var y), a nie inicjalizacja (=7) jest podnoszona na górę.
Ze względu na podnoszenie, y zostało zadeklarowane przed użyciem, ale ponieważ inicjalizacje nie są podnoszone, wartość y jest niezdefiniowana.
Przykład 2 jest taki sam jak pisanie:
Przykład
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y
Zadeklaruj swoje zmienne na górze!
Podnoszenie jest (dla wielu programistów) nieznanym lub pomijanym zachowaniem JavaScript.
Jeśli programista nie rozumie podnoszenia, programy mogą zawierać błędy (błędy).
Aby uniknąć błędów, zawsze deklaruj wszystkie zmienne na początku każdego zakresu.
Ponieważ tak interpretuje kod JavaScript, jest to zawsze dobra zasada.
JavaScript w trybie ścisłym nie zezwala na używanie zmiennych, jeśli nie są one zadeklarowane.
Przestudiuj „użyj ścisłego” w następnym rozdziale.