tutoriais mais recente desenvolvimento web
 

JavaScript Hoisting


Hoisting é o comportamento padrão do JavaScript de mover declarações ao topo.


As declarações de JavaScript são içadas

Em JavaScript, uma variável pode ser declarado depois de ter sido usado.

Em outras palavras; uma variável pode ser usado antes de ter sido declarada.

Exemplo 1 dá o mesmo resultado que no Exemplo 2:

exemplo 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
Tente você mesmo "

exemplo 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
Tente você mesmo "

Para entender isso, você tem que entender o termo "hoisting" .

Hoisting é o comportamento padrão do JavaScript de mover todas as declarações ao topo do escopo atual (para o topo do script atual ou a função atual).


JavaScript Initializations Não são içadas

JavaScript única talhas declarações, não inicializações.

O Exemplo 1 não dar o mesmo resultado que no Exemplo 2:

exemplo 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
Tente você mesmo "

exemplo 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
Tente você mesmo "

Faz sentido que y é indefinido no último exemplo?

Isso ocorre porque somente a declaração (var y), e não a inicialização (= 7) é içado ao topo.

Devido à hoisting , y tem sido declarada antes de ser utilizado, mas porque não inicializações são içadas, o valor de y é indefinido.

Exemplo 2 é o mesmo que escrever:

Exemplo

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
Tente você mesmo "

Declarar as variáveis ​​no topo!

Hoisting é (para muitos desenvolvedores) um comportamento desconhecido ou esquecido de JavaScript.

Se um desenvolvedor não entende hoisting , os programas podem conter bugs (erros).

Para evitar erros, sempre declarar todas as variáveis ​​no início de cada escopo.

Uma vez que esta é a forma como JavaScript interpreta o código, é sempre uma boa regra.

JavaScript no modo restrito não permite variáveis ​​a serem usadas se não forem declarados.
Estudo "use strict" no próximo capítulo.