English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
No JavaScript, independentemente de onde estejam definidos, todas as declarações de variáveis e funções serão movidas ou elevadas para o topo do escopo atual. Isso é o comportamento padrão do interpretador do JavaScript, conhecido comoelevamento (hoisting).
As funções definidas com declaração de função são automaticamente elevadas.
Isso significa que podem ser chamadas antes de serem definidas.
// Chamar a função antes da declaração greet(); function greet() { document.getElementById("output").innerHTML = "Hello World"; }Teste e veja‹/›
Como você vê, antes de definirmos, já chamamosgreet()função, mas o código ainda é válido. Isso é porque a declaração da função é automaticamente elevada para o topo no fundo.
O elevamento é o comportamento padrão do JavaScript de mover as declarações para o topo.
O JavaScript apenas eleva as declarações, não a inicialização. Se declarar e inicializar uma variável após usá-la, o valor será incerto.
document.write(num); // undefined var num; num = 50;Teste e veja‹/›
Se declarar uma variável após usá-la, mas inicializá-la antes, ela retornará esse valor:
num = 50; document.write(num); // 50 var num;Teste e veja‹/›
usarletouconstVariáveis e constantes não declaradas.
O JavaScript apenas eleva as declarações, não a inicialização.
Os seguintes dois exemplos produzem resultados diferentes:
var x = 1; // Inicializar x var y = 2; // Inicializar y document.write(x + " " + y); // 1 2Teste e veja‹/›
var x = 1; // Inicializar x document.write(x + " " + y); // 1 undefined var y = 2; // Inicializar yTeste e veja‹/›
emExemplo2noApenas a declaração (var y) e não a inicialização (=) 2levantado para o topo.
Devido ao Hoisting, y foi declarado antes de ser usado, mas devido à falta de inicialização de Hoisting, o valor de y não está definido.
O exemplo acima é implicitamente entendido como:
var x; // Declarar x var y; // Declarar y // Fim do Hoisting. x = 1; // Inicializar x document.write(x + " " + y); // 1 undefined y = 2; // Inicializar yTeste e veja‹/›
Hoisting é um comportamento desconhecido ou ignorado do JavaScript.
Se você não entender o Hoisting, o programa pode conter erros.
Para evitar erros, declare sempre todas as variáveis no início de cada escopo.
Atenção:Se não declarar variáveis, o JavaScript em modo estrito não permite o uso de variáveis.
Você saberá mais sobre "use strict" no próximo capítulo.