Eu tenho escrito muito código ES6 para io.js recentemente. Não há muito código na natureza para aprender, por isso sinto que estou definindo minhas próprias convenções à medida que avanço.
A minha pergunta é sobre quando usar const
vs let
.
Eu tenho aplicado esta regra: Se possível, use const
. Use apenas let
se você souber que seu valor precisa mudar. (Você sempre pode voltar e alterar a const
para a let
se, posteriormente, for necessário alterar seu valor.)
O principal motivo dessa regra é que é fácil aplicar de forma consistente. Não há áreas cinzentas.
O fato é que, quando aplico essa regra, na prática 95% das minhas declarações são const
. E isso me parece estranho. Só estou usando let
para coisas como i
um for
loop ou ocasionalmente para coisas como totais acumulados de Fibonacci (que não surgem muito na vida real). Fiquei surpreso com isso - verifica-se que 95% das 'variáveis' no meu código ES5 até agora eram de valores que não variam. Mas ver const
todo o meu código parece errado de alguma forma.
Então, minha pergunta é: está tudo bem em usar const
tanto? Eu realmente deveria estar fazendo coisas assim const foo = function () {...};
?
Ou devo reservar const
para esse tipo de situação em que você está codificando um literal na parte superior de um módulo - o que você faz em maiúsculas, como const MARGIN_WIDTH = 410;
?
function foo() {...}
é melhor do que<anything> foo = function() {...}
function foo() {...}
pode causar pequenas confusões durante a depuração, devido à elevação. Além disso, sua existência significa que temos duas construções que fazem a mesma coisa, mas uma delas funciona apenas em um contexto muito específico. (Você pode usar uma expressão de função em qualquer lugar em que uma expressão possa existir, mas você só pode usar uma declaração de função no nível da instrução.) Se você favorecer a brevidade, o problema pode ser apenas o fato de a sintaxe da expressão de função usar a palavra inteira function
.
const
isso tanto.