Var Vs Deixar Javascript
cos |
JavaScript |
sep |
sin
Michael Zippo
Novos recursos foram adicionados à linguagem JavaScript com o lançamento do ECMAScript6 (ES6). Uma dessas características afeta a forma como declaramos as variáveis. Com a adição de let
e const
, havia todos os tipos de perguntas sobre quando usar cada uma das declarações de variáveis.
Neste artigo, falamos sobre cada uma das opções, quanto à sua definição e uso no ambiente JavaScript.
Pré-ES6: Var
Antes do lançamento do ES6, a palavra-chave usada para variáveis foi declaração de var
.
As variáveis também podem ser redeclaradas e atualizadas sem erros
O primeiro problema com var é óbvio: redeclarações podem causar bugs em seu código se uma variável já recebeu o mesmo nome. Pode haver consequências não intencionais se algo for declarado novamente e você não perceber que o nome da variável já foi usado na base de código. Junto com isso, outras peculiaridades também surgem em relação ao escopo e levantamento.
Escopo
O escopo nos diz o que variáveis estão disponíveis para nós usarmos - temos variáveis que podem ter escopo global ou local. E se tivermos a mesma declaração de variável, mas for global e a outra for local?
Quando nossa var é declarada fora da função, ela fica globalmente disponível para nós globalmente. Quando "hello" é declarado na função, ele está disponível apenas para a função - com escopo funcional ou local
Quando temos uma declaração de variável que é a mesma, mas o escopo é diferente, o var na função não altera a atribuição do var global, mesmo com a invocação de helloWorld() . Como o var é declarado na função com o nome "hello", ele não parece estar dentro do alcance global da definição alternativa.
Hoist
Quando uma variável é içada em JavaScript, a declaração de funções e variáveis é movida para o início de seu escopo antes da execução do código. A variável é declarada, mas não inicializada, portanto, o valor inicial da variável é indefinido.
Aqui, "olá" é içado e declarado no topo do seu alcance. Então, basicamente, o computador interpreta o código assim:
O mecanismo JavaScript vê que hello existe, mas não sabe como hello é definido até a próxima etapa.
Eventualmente, os desenvolvedores que ajudaram a criar o padrão ECMAScript perceberam que havia alguns pequenos problemas com o var que poderiam custar-lhes tempo e dinheiro. Então eles decidiram criar palavras-chave mais rigorosas. Isso levou à criação de "licença" e "custo" em ES6
ES6:. Let
A palavra-chave let
é muito semelhante à palavra-chave var de várias maneiras. As principais diferenças são a forma como os erros são retornados e o escopo de cada palavra-chave é definido.
Variáveis declaradas e inicializadas com a palavra-chave let
podem ser reatribuídas, mas não podem ser redeclaradas
Quando você executa o código acima em um console JavaScript, a última linha retorna um erro:
SyntaxError: The identifier ` hello` já foi declarado
Ao contrário de var
, declarar variáveis usando let
não permitirá uma declaração para as mesmas. Nome variável. Você pode, no entanto, reatribuir se desejar, conforme mostrado no exemplo acima.
Escopo
Em termos de campo, let
é muito semelhante a var
. Além das regras que o escopo global ou local nos dá, há uma restrição adicional com let
. As variáveis declaradas em um bloco de código estão disponíveis apenas para esse bloco de código. Isso é semelhante ao escopo funcional, pois as funções são blocos de código que podem ser transportados ainda mais por ter blocos separados dentro dessa função.
Não há erros neste código porque o duas instâncias de hello são tratadas como variáveis separadas porque têm escopos diferentes.
Hoisting
Hoisting é outra área onde as declarações let e var são semelhantes. "Var", quando gerado, é inicializado como indefinido. No entanto, "leave" gera um erro de referência se você tentar usá-lo antes de ser inicializado.
Observe que a palavra-chave let é a melhor escolha em termos de sintaxe. Isso ocorre porque os erros são gerados quando você tenta redeclarar uma variável ou usá-la antes do processo de inicialização.
ES6: Const
A palavra-chave const
tem linhas de guia mais rigorosas do que a let
palavra-chave em>. Com const
, as variáveis não podem ser declaradas ou reatribuídas. Um TypeError é gerado se você tentar reatribuir a um const
.
Dito isso, ao trabalhar com objetos ou arrays, as propriedades do objeto ou array podem ser atualizadas. Desde que a estrutura básica do objeto ou tabela não seja alterada, você sempre poderá atualizá-la.
Como mostra o exemplo, reatribuir a tarefa a um novo conjunto de propriedades resulta em um erro TypeError: Assignment to constant variable.
. Const não pode ser reatribuído ou redeclarado, exceto nos casos em que você atualiza a propriedade exclusiva em um objeto