Definição de variáveis ​​em JavaScript

A conclusão do ES6 em 2015 trouxe novas formas de definir variáveis ​​JavaScript. A palavra-chave let cria uma variável com escopo de bloco enquanto const especifica um valor imutável. Aqui estão as últimas notícias sobre como esses tipos modernos de variáveis ​​diferem do clássico. var .

índice

  1. Onde
  2. Permitir
  3. Const
  4. Que tipo de variável devo usar?
  5. Quando não usar

Onde

Antes do ES6, var era sua única opção ao definir uma variável. Você pode alterar livremente os valores das variáveis ​​criadas com var . Você também pode declarar novamente a própria variável.

 var demo = "primeiro valor" ; var demo = "segundo valor" ; demo = "terceiro valor" ; example = "isso gera um erro - variável não declarada" ;

O uso de var cria uma variável com escopo para a função atual. Caso você a use fora de uma função, a variável resultante terá um escopo global.

O "escopo" de uma variável descreve onde ela pode ser usada. Uma variável de escopo de função pode ser acessada por meio de código na função que a define. Uma variável global pode ser acessada em todo o código.

 var meuGlobal = "global" ; function testeA ( ) { var myFunctionScope = "testeA" ; console. log(myFunctionScope); console. log(meuGlobal); } function testB ( ) { myGlobal = "sobrescrito!" ; console. log(meuGlobal); // console.log(myFunctionScope); // ERRO } testeA(); testeB(); testeA();

Este exemplo mostra a diferença entre variáveis ​​de escopo global e de função. myGlobal pode ser lido (e escrito) por testA E testB . myFunctionScope é definido apenas em testA , como este testB lança um erro ao tentar acessá-lo. Isto é o que este exemplo irá produzir:

 testA global sobrescrito! teste A sobrescrito!

O valor de myFunctionScope é mantido separadamente em cada função. O valor de myGlobal é atualizado em ambas as funções quando substituído por testB .

Permitir

A palavra-chave let mais recente é a alternativa moderna para var . Muitas vezes, você pode adotar let em todos os lugares em que escreveu var . No entanto, existem diferenças importantes a serem observadas.

O recurso let mais significativo é seu escopo. As variáveis ​​são limitadas a blocos de código individuais em vez de funções inteiras. Em JavaScript, um bloco é uma seção de código entre chaves. Cada variável let só é acessível ao código dentro de seu bloco.

 function letTest ( x ) { let demo = "olá mundo" ; if ( x > 10 ) { deixe y = 9000 ; demo = "foobar" ; } console. log(demonstração); // console "foobar". log(y); // ERRO }

Neste exemplo, a instrução if cria um novo bloco de código. Os blocos herdam o escopo de seu bloco pai, portanto, a variável demo permanece disponível. A variável y tem o escopo da instrução if . A tentativa de entrar y sair do bloco if gera um erro de variável indefinida.

Assim como var , as variáveis ​​criadas com let podem alterar seus valores a qualquer momento. No entanto, eles não podem ser declarados novamente, usar let duas vezes com o mesmo nome em um único bloco causará um erro.

 deixe demonstração = "teste" ; demonstração = "exemplo" ; deixe demonstração = "teste" ; // ERRO

Uma exceção é lançada quando uma variável é declarada novamente em um escopo aninhado. As regras de escopo em nível de bloco significam que isso é permitido; você acaba com duas variáveis ​​separadas que têm o mesmo identificador.

 deixe foo = "barra" ; if ( true ) { let foo = "foobar" ; console. log(foo); } console. log(foo);

O exemplo acima produzirá foobar bar . A variável foo é declarada novamente no bloco if , sem afetar a variável foo do escopo externo. Você perde a capacidade de referenciar a variável externa de dentro do bloco interno.

Const

A palavra-chave const foi outra adição do ES6. É como um bloco de let . const é a abreviação de "constant" e é usado para valores imutáveis ​​que nunca serão alterados. Tentar atualizar o valor de uma variável const sempre gerará um erro.

 const foo = "barra" ; const foo = "foobar" ; // ERRO

Conseqüentemente, você deve sempre inicializar as variáveis const com um valor. Não é permitido definir uma const e definir seu valor posteriormente.

 deixe demoLet ; // OK var demoVar ; // OK const demoConst ; // ERRO const demoConst = "valor" ; // OK

tecnicamente, const não define um valor constante. Na verdade, ele cria uma referência constante a um valor. O efeito disso é que você ainda pode atualizar as propriedades dos objetos atribuídos a const . Os erros só ocorrem se você usar a mesma const no lado esquerdo de uma tarefa.

Que tipo de variável devo usar?

você deve adotar let para a maioria das variáveis ​​de propósito geral no código JavaScript. O escopo em nível de bloco e a nova instrução proibida ajudam a detectar erros e evitar substituições não intencionais.

Usando let pára a variável "vazamento" em que você pode acessar variáveis ​​em escopos para os quais não foram projetadas. Um exemplo clássico são os iteradores em loops:

 for ( var i = 0 ; i <= 10 ; i ++ ) { // faça algo } console. log(i);

Isso implicará 10 aparecendo no console. Usar let em vez disso lançará undefined , pois a variável i ficará inacessível fora do if . alcance. Este é geralmente o resultado desejado neste tipo de cenário.

Os loops também demonstram os perigos da reatribuição de var :

 for ( var i = 0 ; i <= 10 ; i ++ ) { setTimeout ( ( ) => console.log(i), 1000); }

À primeira vista, esse código parece que deve gerar os números de 1 a 10. Em vez disso, 10 será gravado dez vezes. setTimeout() é assíncrono e i no retorno de chamada é lexicalmente vinculado ao escopo. Assim como var i é usado no loop, a variável i recebe um novo valor em cada iteração. Quando o retorno de chamada do temporizador é executado, todas as dez iterações já foram concluídas e i sempre resolverei para o valor final – 10 , neste caso.

Usando let i , você declararia uma nova variável chamada i para cada iteração do loop. Cada variável manteria seu valor após concluir sua iteração, resultando na saída de log esperada.

Quando não usar

Há cenários em que você não deve usar let . Você deve usar const ao criar uma variável que você sabe que nunca mudará. Os pacotes e ferramentas de análise estática poderão avisá-lo se você tentar reatribuir seu valor sem saber.

Geralmente, é uma boa ideia manter as variáveis ​​imutáveis ​​sempre que possível. Isso ajuda a eliminar erros causados ​​por substituições não intencionais. O uso de const também ajuda a indicar sua intenção em uma base de código, tornando explícito que um valor não será alterado.

Recursos do ES6 como let AND const agora são universalmente suportados em navegadores modernos. Alguns navegadores mais antigos sem suporte total ao ES6, principalmente o Internet Explorer 11, também os oferecem. Você não precisa se preocupar se eles estarão disponíveis, a menos que você esteja segmentando uma plataforma muito antiga. Eu uso let AND const para manter o código mais limpo e reduzir o risco de bugs ocultos.

  • Google Assistant agora permite atrasar ações em suas rotinas
  • Ragnarok ransomware libera o decodificador mestre após o desligamento

descubra mais conteúdo

O que é um amplificador integrado?

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão geek

Deixe uma resposta Cancelar resposta

JavaScript é uma linguagem de programação interpretada, um dialeto do padrão ECMAScript. Ele é definido como orientado a objetos, baseado em protótipos, imperativo, fracamente tipado e dinâmico.

Ir arriba