Elevação de variável JavaScript

Em JS, as variáveis ​​são içadas (declaradas) para o topo do escopo.
Isso significa que a seguinte função:

function fn() {
alert
("Hello " + world);
var world = "world";
}

Na verdade, será avaliado como:

function fn() {
var world;
alert
("Hello " + world);
world
= "world";
}

É por isso que JS não vai incomodá-lo com variáveis ​​não inicializadas, e é por isso que acho que a melhor prática é declarar suas variáveis ​​onde elas estarão eventualmente – no topo do escopo. Dessa forma, você mesmo pode identificar os problemas.

Você também pode usar isso: http://www.jslint.com/lint.html

O exemplo acima alertará ‘Hello undefined’.