Hoisting jest domyślne zachowanie Javascript w ruchomych deklaracji na szczyt.
Deklaracje JavaScript są wydobywanych
W JavaScript, zmienna może być uznana po tym został wykorzystany.
Innymi słowy; zmienna może być używany, zanim został ogłoszony.
Przykład 1 daje taki sam wynik jak w przykładzie 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
Spróbuj sam " 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
Spróbuj sam " Aby to zrozumieć, trzeba zrozumieć pojęcie "hoisting" .
Hoisting jest domyślne zachowanie Javascript w ruchomych wszystkie deklaracje na górę bieżącego zakresu (na górze skryptu lub bieżącej funkcji).
Inicjowania JavaScript są nie wywieszono
JavaScript wciągniki tylko deklaracje, a nie inicjacji.
Przykład 1 nie daje taki sam wynik jak w przykładzie 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
Spróbuj sam " 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
Spróbuj sam " Czy to ma sens, że y jest niezdefiniowane w ostatnim przykładzie?
To dlatego, że tylko deklaracja (var y), a nie inicjalizacji (= 7) jest podniesiona do góry.
Z powodu hoisting , y zostały zadeklarowane przed użyciem, ale ponieważ pliki uruchamiania nie są wydobywanych, wartość y jest niezdefiniowany.
Przykład 2 jest taki sam, co:
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
Spróbuj sam " Zadeklarować zmienne na górze!
Hoisting się (wielu programistów) nieznany lub pomijane zachowanie JavaScript.
Jeśli deweloper nie rozumie hoisting programy mogą zawierać błędy (błędy).
Aby uniknąć błędów, zawsze zadeklarować wszystkie zmienne na początku każdego zakresu.
Ponieważ jest to w jaki sposób interpretuje kod JavaScript, to zawsze dobra zasada.
JavaScript w trybie ścisłym nie pozwala na zmienne być stosowane, jeśli nie zostały one zgłoszone.
Badanie "use strict" w następnym rozdziale.