Variáveis ​​JavaScript - qual é a diferença entre var, let e const em javascript?

Variáveis ​​JavaScript - qual é a diferença entre var, let e const em javascript?
No ECMAScript 2016, o JavaScript introduziu dois novos métodos para declarar variáveis ​​com deixar e const palavras-chave. JavaScript tinha apenas uma opção para declarar variáveis ​​antes de 2016 i.e. o var palavra -chave. Neste artigo, aprenderemos por que existem três maneiras diferentes de declarar variáveis ​​no JavaScript; Também abordaremos a diferença entre esses três artigos. Além disso, este artigo também apresentará conceitos como escopo variável e elevação. Então, vamos começar entendendo o que é escopo variável:

O que é escopo em JavaScript

Em JavaScript, o escopo é definido por colchetes encaracolados. Ele define um bloco de código que precisa ser executado juntos. JavaScript tem dois tipos de escopos:

  • Escopo de função
  • Block-scope

Função-escopo: Qualquer variável em JavaScript criada dentro de uma função usando var é escopo de função. Sua visibilidade é restrita à definição da função e não pode ser acessada de qualquer lugar fora da função:

função showMessage ()
var message = 'hi from linuxhint';
console.log ("in:" + mensagem); // 'oi, Linuxhint!'

Mostrar mensagem();
console.log ("out:" + mensagem); ReferenceError: a mensagem não está definida

Block-scope: Um bloco de código em JavaScript é definido por aparelhos encaracolados. Esse tipo de escopo nos ajudará a diferenciar destaque entre os três métodos de declaração de variáveis:

A seguir, é um exemplo em que declaramos variáveis ​​com var, let e const em um bloco if e depois as registramos no console:

se for verdade)
var message1 = 'hi from linuxhint';
Deixe Message2 = 'Hello from Linuxhint';
const message3 = 'oi novamente do linuxhint';
console.log ("in:" + message1); // 'oi de Linuxhint';
console.log ("in:" + message2); // 'Olá do Linuxhint';
console.log ("in:" + message3); // 'oi novamente do linuxhint';

Todas as variáveis ​​foram registradas no console sem nenhum erro, pois foram registradas no mesmo bloco.

No entanto, se tentarmos registrá-los de fora do bloco IF, o erro abaixo mencionado será exibido:

se for verdade)
var message1 = 'hi from linuxhint';
Deixe Message2 = 'Hello from Linuxhint';
const message3 = 'oi novamente do linuxhint';
console.log ("in:" + message1); // 'oi de Linuxhint';
console.log ("in:" + message2); // 'Olá do Linuxhint';
console.log ("in:" + message3); // 'oi novamente do linuxhint';

console.log ("out:" + message1); // 'oi de Linuxhint';
console.log ("out:" + message2); // ReferenceError: Message2 não está definido
console.log ("out:" + message3); // ReferenceError: Message3 não está definido

Como usar o VAR para declarar uma variável no JavaScript

Antes do ECMAScript 2016 var foi o único método de declarar uma variável em JavaScript, mas tinha vários problemas associados a ele, de modo que novos métodos foram introduzidos que poderiam ser usados ​​para declarar variáveis. Vamos primeiro entender var E então falaremos sobre essas questões:

Escopo de var: O escopo variável significa basicamente onde a variável estará disponível para uso. Variáveis ​​que são declaradas com o var palavra -chave tem escopo global ou local.

Variáveis ​​que são declaradas fora do bloco de funções usando var ter escopo global. Escopo global significa que uma variável está disponível para uso em qualquer lugar da janela.

Quando a variável é declarada dentro de uma função, é escopo de funções, o que significa que ela só pode ser usada dentro da função:

Para entender melhor, veja o exemplo abaixo:

função showMessage ()
var message = 'hi from linuxhint';

Aqui o mensagem é o escopo da função para que não possa ser acessado fora da função. Então, se fizermos isso:

função showMessage ()
var message = 'hi from linuxhint';

console.log ("out:" + mensagem); // ReferenceError: a mensagem não está definida

Isso nos dará um erro que é porque o mensagem não está disponível fora da função.

VAR fora de um loop for: A variável "eu" pode ser acessado do lado de fora do loop for.

para (var i = 0; i < 5; i++)
console.log ("in:" + i);

console.log ("out:" + i);

As variáveis ​​VAR podem ser declaradas e atualizadas novamente: Nas variáveis ​​JavaScript declaradas com var A palavra -chave pode ser redeclared e atualizada no mesmo escopo:

função showMessage ()
var message = 'hi from linuxhint';
message = 'olá de linuxhint';
var mensagem = 'oi novamente do linuxhint';
console.log (mensagem); // 'oi novamente do linuxhint';

Mostrar mensagem()

Como usar o Let to Declare uma variável no JavaScript: O deixar A palavra -chave agora é preferida var para declarações variáveis; vem com algumas melhorias sobre var.

Vamos bloquear o escopo: Em JavaScript, um bloco de código é a coleção de declarações limitadas por um par de colchetes encaracolados . Uma variável declarada usando o deixar A palavra -chave está disponível apenas para uso nesse bloco e não pode ser acessada de fora:

se for verdade)
deixe a mensagem = 'oi do linuxhint';
console.log ("in:" + mensagem); // "Oi de Linuxhint"

console.log ("out:" + mensagem); // ReferenceError

Se usarmos o mensagem Fora do bloco onde foi definido, ele retornará um erro. Isso ocorre porque as variáveis ​​permitem que as variáveis ​​sejam escondidas.

Deixe fora de um loop for: O exemplo a seguir demonstrando o deixar saída variável usando o loop:

para (vamos i = 0; i < 5; i++)
console.log ("in:" + i);

console.log ("out:" + i);

vamos ser atualizados, mas não re-declarados: Uma variável declarada com deixar pode ser atualizado em seu escopo, como var, Mas diferente var, não pode ser redeclarado:

deixe a mensagem = 'oi do linuxhint';
message = 'olá de linuxhint';

O console está completamente vazio e não está retornando nenhum erro. Essas declarações retornarão um erro:

deixe a mensagem = 'oi do linuxhint';
Deixe Message = 'Hello from Linuxhint'; // SyntaxError: Identifier 'Mensagem' já foi declarado

No entanto, redefinindo a mesma variável em um escopo diferente usando deixar não retorna nenhum erro:

deixe a mensagem = 'oi do linuxhint';
se for verdade)
Deixe Message = 'Hello from Linuxhint';
console.log ("in:" + mensagem); // "Olá do Linuxhint"

console.log ("out:" + mensagem); // "Oi de Linuxhint"

O deixar A palavra -chave trata essas duas variáveis ​​como diferentes se estiverem em escopos diferentes, para que não retorne nenhum erro; Este recurso do deixar A palavra -chave torna uma escolha melhor do que var. Ao usar deixar, Você pode reutilizar nomes de variáveis ​​em diferentes escopos sem se preocupar se você já usou esse nome de variável antes.

Como usar o const para declarar a variável em javascript

As variáveis ​​declaradas usando o const Palavra -chave tem valores constantes. Isso significa que seus valores não podem ser alterados/transferidos. Semelhante às variáveis ​​declaradas com o deixar palavra -chave, as variáveis ​​declaradas com o var Palavra-chave também é escopo de blocos.

Const não pode ser re-declarado ou transferido: As variáveis ​​declaradas com a palavra -chave const não pode ser redeclarado ou transferido no mesmo escopo. Portanto, se declaramos uma variável com palavra -chave const, não podemos fazer isso:

const message = 'hi from linuxhint';
message = 'olá de linuxhint'; // typeError

Nem seremos capazes de fazer isso:

const message = 'hi from linuxhint';
const message = 'hello from linuxhint'; // Erro de sintaxe

Toda variável declarada usando o const A palavra -chave deve ser inicializada no momento de sua declaração.

Este comportamento do const A palavra -chave de alguma forma muda quando se trata de objetos. Enquanto o objeto declarado não pode ser atualizado, suas propriedades podem ser alteradas

Então, se declararmos um objeto com const:

const user =
Nome: "Steve",
Idade: 13

Embora isso não possa ser feito:

usuário =
Nome de usuário: "Harry",
Grau: "3º"
// TypeError: atribuição à variável constante.

Isto pode ser feito:

do utilizador.name = "Harry";

Isso mudará o valor do do utilizador.nome sem retornar nenhum erro.

Revisão final

Declaração variável Escopo de função Block-scope Redefinível
var
deixar
const

Conclusão

Geralmente é uma boa prática evitar usar var Declarar variáveis ​​em JavaScript porque o escopo da função é confuso e não é tão óbvio quanto o escopo do bloco. O deixar e const Palavras -chave incentivam os desenvolvedores a usar melhores práticas de codificação. Você geralmente deve usar deixar Para as variáveis ​​que você precisará reatribuir e usar o const palavra -chave para todas as outras variáveis. Este artigo explica minuciosamente todos os três tipos de variáveis ​​com exemplos.