Elevação de JavaScript (com exemplos)

Neste tutorial, você aprenderá sobre içamento de JavaScript com a ajuda de exemplos.

Hoisting em JavaScript é um comportamento no qual uma função ou variável pode ser usada antes da declaração. Por exemplo,

 // using test before declaring console.log(test); // undefined var test;

O programa acima funciona e a saída será indefinida. O programa acima se comporta como

 // using test before declaring var test; console.log(test); // undefined

Como a variável test é apenas declarada e não tem valor, o undefinedvalor é atribuído a ela.

Se você quiser aprender mais sobre variáveis, visite Variáveis ​​de JavaScript.

Nota : No içamento, embora pareça que a declaração tenha subido no programa, o que realmente acontece é que as declarações de função e variável são adicionadas à memória durante a fase de compilação.

Elevação Variável

Em termos de variáveis e constantes, palavra-chave varé içada e lete constnão permite elevação.

Por exemplo,

 // program to display value a = 5; console.log(a); var a; // 5

No exemplo acima, a variável a é usada antes de ser declarada. E o programa funciona e exibe a saída 5. O programa se comporta como:

 // program to display value var a; a = 5; console.log(a); // 5

No entanto, em JavaScript, as inicializações não são suspensas. Por exemplo,

 // program to display value console.log(a); var a = 5;

Resultado

 Indefinido

O programa acima se comporta como:

 var a; console.log(a); a = 5;

Apenas a declaração é movida para a memória na fase de compilação. Portanto, o valor da variável a é undefinedporque a é impresso sem inicializá-lo.

Além disso, quando a variável é usada dentro da função, a variável é içada apenas para o topo da função. Por exemplo,

 // program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);

Resultado

 olá Uncaught ReferenceError: b não está definido

No exemplo acima, a variável b é içada para o topo da função greete se torna uma variável local. Portanto, b só está acessível dentro da função. b não se torna uma variável global.

Para saber mais sobre variáveis ​​locais e globais, visite JavaScript Variable Scope.

Nota : No içamento, a declaração da variável só é acessível ao escopo imediato.

Se uma variável for usada com a letpalavra - chave, essa variável não será içada. Por exemplo,

 // program to display value a = 5; console.log(a); let a; // error

Resultado

 ReferenceError não capturado: Não é possível acessar 'a' antes da inicialização

Durante o uso let, a variável deve ser declarada primeiro.

Elevação de Função

Uma função pode ser chamada antes de ser declarada. Por exemplo,

 // program to print the text greet(); function greet() ( console.log('Hi, there.'); )

Resultado

 Olá

No programa acima, a função greeté chamada antes de ser declarada e o programa mostra a saída. Isso se deve ao içamento.

No entanto, quando uma função é usada como expressão , ocorre um erro porque apenas as declarações são suspensas. Por exemplo;

 // program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )

Resultado

 ReferenceError não capturado: saudação não está definida

Se varfosse usado no programa acima, o erro seria:

 TypeError não capturado: saudação não é uma função

Observação : geralmente, o içamento não é executado em outras linguagens de programação como Python, C, C ++, Java.

O içamento pode causar resultados indesejáveis ​​em seu programa. E é melhor declarar variáveis ​​e funções antes de usá-las e evitar içamentos.

No caso de variáveis, é melhor usar do letque var.

Artigos interessantes...