Hoisting este comportamentul implicit al JavaScript declarațiilor se deplasează la partea de sus.
Declarațiile JavaScript sunt arborate
În JavaScript, o variabilă poate fi declarată după ce a fost folosit.
Cu alte cuvinte; o variabilă poate fi utilizată înainte de a fi declarată.
Exemplul 1 dă același rezultat ca și Exemplul 2:
Exemplul 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
Încearcă - l singur » Exemplul 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
Încearcă - l singur » Pentru a înțelege acest lucru, trebuie să înțeleagă termenul de "hoisting" .
Hoisting este comportamentul implicit al JavaScript a muta toate declarațiile la partea de sus a domeniului de aplicare curent (to the top of the current script or the current function) de (to the top of the current script or the current function) - (to the top of the current script or the current function) .
JavaScript Initializari Nu sunt arborate
JavaScript troliuri doar declarații, nu initializations.
Exemplul 1 nu dă același rezultat ca și Exemplul 2:
Exemplul 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
Încearcă - l singur » Exemplul 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
Încearcă - l singur » Are sens că y este nedefinită în ultimul exemplu?
Acest lucru se datorează faptului că numai declarația (var y) , nu inițializarea (=7) este arborat la partea de sus.
Din cauza hoisting , y a fost declarată înainte de a fi folosit, dar pentru că initializations nu sunt inaltate, valoarea lui y este nedefinit.
Exemplul 2 este același ca și scris:
Exemplu
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
Încearcă - l singur » Declararea variabilelor în partea de sus!
Hoisting este (to many developers) un comportament necunoscut sau trecute cu vederea de JavaScript.
În cazul în care un dezvoltator nu înțelege de hoisting , programe pot conține erori (errors) .
Pentru a evita bug-uri, să declare întotdeauna toate variabilele la începutul fiecărui domeniu de aplicare.
Din moment ce acest lucru este modul în care JavaScript interpretează codul, este întotdeauna o regulă bună.
JavaScript în modul strict nu permite variabile care urmează să fie utilizate în cazul în care nu sunt declarate.
Studiul "use strict" în capitolul următor.