Por que o JavaScript eleva as variáveis?
Qual foi o raciocínio dos designers quando decidiram implementar o içamento? Existem outras linguagens populares que fazem isso?
Forneça links relevantes para documentação e / ou registros.
javascript
hoisting
Xlaudius
fonte
fonte
div
em jQueryRespostas:
Como Stoyan Stefanov explica no livro "Padrões JavaScript", a elevação é resultado da implementação do interpretador JavaScript.
A interpretação do código JS realizada em duas passagens. Durante a primeira passagem, o interpretador processa declarações de variáveis e funções.
A segunda passagem é a etapa real de execução do código. O intérprete processa expressões de função e variáveis não declaradas.
Assim, podemos usar o conceito de "içamento" para descrever tal comportamento.
fonte
O criador do JS, Brendan Eich , disse uma vez (no Twitter) :
Ele também explicou que ...
Existem outras linguagens populares que fazem isso?
Não conheço nenhuma outra linguagem popular que erga variáveis da mesma maneira. Acho que até o ActionScript - outra implementação do ECMAScript usada no desenvolvimento do Flash - não implementou içamento. Isso tem sido uma fonte de confusão e frustração para desenvolvedores familiarizados com outras linguagens que estão aprendendo JavaScript.
fonte
Isso ocorre porque o interpretador javascript interpreta o código em dois ciclos.
No 1º ciclo todas as variáveis e funções declarações são levados para cima do escopo da função que está sendo executada. Isso ajuda na criação
variableObjects
deexecution context
da função mesmo antes de sua execução.Na 2ª fase, as atribuições de valor, instruções de código e chamadas de função ocorrem linha por linha da maneira esperada.
Você leu um pouco mais detalhadamente aqui.
Ele lhe dará uma melhor imagem em torno em torno do comportamento
let
,const
eclass
declarações, também a precedência que segue entre variável e funções.fonte