1
resposta

[Sugestão] Discussão sobre o problema

Bom dia, pessoal! Olhando pelo lado do código limpo, sabemos que o melhor a se fazer é realmente reatribuir um valor para a variável "mes", e não chamar uma nova variável com o mesmo nome (como descrito na alternativa B). Porém, para que possamos abrir uma boa discussão sobre, gostaria de saber quais os problemas que poderemos enfrentar futuramente no nosso código caso utilizemos essa opção, em poucas palavras, em um código mais robusto, qual o problema de declarar a mesma variável duas vezes ao invés de atualizá-la?

1 resposta

Oi João!

O JavaScript tem algumas características muito diferentes de outras linguagens comerciais; uma delas, por exemplo, é a possibilidade de executar o código abaixo sem dar nenhum erro:

var numero = 1;
var numero = 2;
// o valor atual da variável numero é 2

Porém, isso só é possível utilizando a palavra-chave var. Já o código abaixo, que utiliza a palavra-chave let para criação de variáveis, já nos retorna um erro:

let numero = 1;
let numero = 2;
Uncaught SyntaxError: Identifier 'x' has already been declared
// o texto acima pode mudar um pouco dependendo do seu navegador, mas é sempre um "SyntaxError", um erro de sintaxe, que diz que a variável numero já foi declarada - ou seja, já existe uma variável com este nome.

Embora o nome seja "variável", normalmente a melhor prática é apenas permitir que seu valor seja modificado (ou seja, que uma variável tenha seu valor redeclarado) quando é realmente necessário, por exemplo em laços de repetição. Em grande parte das vezes, a partir do momento em que declaramos uma variável e atribuímos valor a ela, este valor não é mais modificado durante a execução de um programa ou de uma função.

Independente de querermos ou não modificar o valor de uma variável, a primeira opção não é usual entre linguagens de programação e não deve ser usada, pois devemos criar (declarar) as variáveis com um nome único, apenas uma vez. Ou seja, sempre que precisar redeclarar o valor de uma variável, utilize a forma:

var numero = 0;
numero = 1;

As formas let e const para se escrever variáveis são mais recentes. Quando o JS foi lançado contava somente com a forma var, mas durante o desenvolvimento da linguagem foi-se percebendo que essa "permissividade" do var era um prato cheio para o surgimento de bugs, pois se o valor de uma variável pode ser redeclarado a qualquer momento, fica difícil saber com certeza qual é o valor dela em determinado momento do programa! Já let e const trabalham de forma mais restrita, o que parece mais chato quando estamos aprendendo a programar, mas que depois passa a fazer muito mais sentido.

Você pode conferir mais sobre esse assunto sobre diferenças entre var, let e const no nosso blog!

Bons estudos ;)