tldr;
Existem três maneiras de criar variáveis em um aplicativo JavaScript: usando var
, usando let
ou usando const
. Não será uma postagem tentando convencê-lo de qual você deve usar ou discutindo o que é melhor. É bom saber sobre as diferenças e o que isso significa quando você usa as diferentes opções. Mas, esperançosamente, no final de tudo isso, você estará confortável com as três opções e poderá tomar uma decisão para sua equipe que atenda às suas necessidades. Para tirar o máximo proveito desta postagem, é melhor se você entender o escopo variável, que abordamos nesta postagem anteriormente.
Variáveis usando var
Quando você declara uma variável com var
, a variável terá escopo de função. Se você tentar usar a variável antes de ser declarada nessa função, ela terá um undefined
valor devido à elevação. Estes podem ser os efeitos desejados para o seu aplicativo, mas minha recomendação é não usar var
para declarações de variáveis.
Variáveis usando let
Quando você declara uma variável com let
, a variável terá escopo definido no bloco. Se você tentar usar a variável antes que ela seja declarada nesse bloco ou fora desse bloco, a ReferenceError
será lançada. Isso é bom porque as ocasiões em que deve ser raro você usar uma variável antes de declará-la. Essas variáveis também são redesignáveis. Vejamos um exemplo:
function playGame() {
let gameName = 'Super Mario Brothers';
gameName = 'Mario Kart 8';
console.log(gameName); // Mario Kart 8
}
playGame();
No exemplo acima, declaramos a gameName
variável e inicializamos seu valor como Super Mario Brothers
. Mas logo abaixo, atribuímos novamente o valor a uma string diferente Mario Kart 8
,. Isso é completamente válido para variáveis declaradas com let
. Minha recomendação é usar let
sempre que você precisar reatribuir o valor de uma variável. Exemplos de quando você pode precisar fazer isso seriam quando em um for
loop, por exemplo.
Variáveis usando const
Quando você declara uma variável com const
, a variável terá escopo definido no bloco. Se você tentar usar a variável antes que ela seja declarada nesse bloco ou fora desse bloco, a ReferenceError
será lançada. Isso é bom porque as ocasiões em que deve ser raro você usar uma variável antes de declará-la. A diferença entre const
e let
, no entanto, é que variáveis declaradas com const
não podem ter seus valores reatribuídos. Portanto, nosso exemplo acima produziria a TypeError
para tentar atribuir um valor a uma variável constante. Vejamos um exemplo de como você pode alterar partes de uma const
variável:
const game = {
title: 'Zelda: Breath of the Wild',
};
game.title = `Zelda: Link's Awakening`;
console.log(game.title); // Zelda: Link's Awakening
Mesmo que tenha game
sido declarado usando const
, ainda podemos alterar o valor de um atributo no objeto. O mesmo acontece com matrizes. Você pode push
em uma matriz declarada com const
. O que você não pode fazer é o seguinte:
const game = {
title: 'Zelda: Breath of the Wild',
};
game = {
title: `Zelda: Link's Awakening`,
}; // TypeError: Assignment to constant variable
No segundo exemplo, o erro ocorre porque estamos alterando o valor da game
variável em si, não apenas um dos valores de seus atributos.
Conclusão
Então, qual das três opções você deve usar? Bem, vou deixar você e sua equipe decidirem. Pessoalmente, gosto de usar const
o tempo todo, a menos que eu saiba que precisarei reatribuir o valor de uma variável. Nesses casos, eu uso let
. Acho que ajuda o seu futuro pessoal e outros desenvolvedores a saberem que você não pretendia alterar esse valor, e o aplicativo produzirá um erro se você tentar alterá-lo. Mas se você preferir usar let
, faça o que for melhor para você e sua equipe.