Hoje vamos apresentar o conceito de hoisting na linguagem JavaScript. |
Neste artigo, o ambiente usado para testar o código JavaScript requer a instalação dos seguintes recursos:
JavaScript - Variáveis
Em JavaScript, existe o conceito de Hoisting aplicado a variáveis.
Assim, em JavaScript toda variável é movida, elevada ou içada ao topo do seu contexto de execução.
Esse mecanismo move as variáveis para o topo do seu escopo antes da execução do código.
Dessa forma, em JavaScript uma variável pode ser declarada depois que ela foi usada, e pode ser usada antes de ser declarada.
Veja como funciona:
No código abaixo eu estou atribuindo um valor à variável minhaVariavelLouca, e, somente depois estou declarando a variável:
Percebeu que eu usei a variável antes de declará-la !!!
Mas esse mecanismo só funciona para declarações e não para inicializações. Veja:
Agora estou inicializando a variável x, e , estou usando a variável y, sem declará-la; estou fazendo apenas a inicialização de y (var y=20) logo a seguir:
Agora o valor de y é undefined pois não estou declarando y, estou apenas inicializando a variável.
Isso ocorre porque
somente a declaração (var y), e não a inicialização
(= 20) é içada para o topo.
Por causa do içamento, y foi declarado antes de ser usado, mas como as
inicializações não são içadas, o valor de
y é
undefined.
Não quer ter dor de cabeça com esse conceito atípico da linguagem JavaScript ?
Conselho de amigo : "Declare todas as suas variáveis no ínicio do escopo"
Ou você pode fazer o seguinte:
Utilizar o strict mode que não permite usar variáveis não declaradas. Veja funcionando...
Alerta : Esse recurso faz parte da ECMAScript 5 e é ignorado por versões anteriores do JavaScript.
Ou ainda...
Na ECMAScript 6 podemos declarar variáveis com escopo de bloco usando a palavra-chave let.
Assim a palavra-chave let trás para JavaScript o escopo de bloco. Se você tentar acessar uma variável declarada com let fora do seu escopo vai obter o erro: Uncaught ReferenceError: escopoBloco is not defined
Mas, cuidado !!!, pois, esse recurso não é suportado por todas as versões dos navegadores.
Assim, variáveis declaradas com var podem ser usadas antes da sua declaração e variáveis criadas com let só podem ser usadas após sua declaração (Elas são elevadas mas não são inicializadas).
"Eu sou o Alfa e o
Ômega, o princípio e o fim, diz o Senhor, que é, e que era, e que há de vir, o
Todo-Poderoso. "
Apocalipse 1:8
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Bem-Vindo Node.js : desenvolvendo para ... - Macoratti
Visual Studio - Iniciando com Node.js - Macoratti
Angular 2 - Cadastro de Clientes - IV - Macoratti
React - Uma introdução bem básica - II - Macoratti
JavaScript - Arrays - Macoratti
ASP.NET - JavaScript - Macoratti
ASP .NET - Validação com JavaScript - Macoratti
JavaScript - Entendendo JavaScript Objects - Macoratti