Ultimele tutoriale de dezvoltare web
 

JavaScript Hoisting


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.