Variável JavaScript e elevação de função

Coleção Filhos do JavaScript | Este artigo

O içamento é apenas mais um pedaço de JavaScript que pode deixar algumas pessoas perplexas. Vamos resolver isso.

Existem basicamente dois casos de içamento: içamento variável e içamento funcional.

Elevação variável (objeto regular)

O escopo do JavaScript é baseado em função, portanto, quando você declara uma variável local usando a palavra chave var, ela cria uma inicialização implícita na parte superior definindo a variável como indefinida.

var name = "John"; //local variable within global scope
surname
= "Maria"; //global variable within global scope

function Fn() {
console
.log(name); // John
console
.log(surname); // Maria
}

function Fn2() {
//implicit top declaration: var name;
console
.log(name); // undefined
console
.log(surname); // Maria
var name = "Richard"; //local variable within function scope Fn2
console
.log(name); // Richard
}

Fn(); Fn2();

Elevação variável (referência a uma função)

O mesmo comportamento ocorre quando a variável faz referência a uma função.

function Fn() {
console
.log(myFunction()); //error as myFunction is undefined
var myFunction = function() {return 1;};
console
.log(myFunction()); // 1
}
Fn();

Elevação de função

A função de içamento funciona de maneira completamente diferente. JavaScript disponibiliza todas as funções no topo, independentemente de quando são definidas.

console.log(Fn());  // 1
function Fn() {return 1;};
console
.log(Fn()); // 1

Coleção Filhos do JavaScript | Este artigo