Por exemplo, neste vídeo Redux , o instrutor sempre usa sintaxe como
const counter = (state=0, action) => {
... function body here
}
onde eu usaria apenas o "tradicional"
function counter(state=0, action) {
... function body here
}
O que é realmente mais curto e, na IMO, mais claro. É mais fácil digitalizar a borda esquerda da página, razoavelmente uniforme e estruturada, para a palavra "função" do que digitalizar a borda direita irregular por um pequeno "=>".
Além de this
, e tentando ser objetivo, não opinião, existe alguma diferença ou vantagem útil na sintaxe nova?
javascript
functions
es6
user949300
fonte
fonte
const
ajuda a garantir que a função não seja redefinida mais tarde.Respostas:
As instruções de função (funções nomeadas, segunda sintaxe mostrada) são levantadas no topo do escopo lexical completo, mesmo aquelas atrás de blocos arbitrários e de controle, como
if
instruções. O uso deconst
(likelet
) para declarar uma variável fornece a ela o escopo do bloco, interrompe a elevação completa (elevação para o mero bloco) e garante que ela não possa ser declarada novamente.Ao concatenar scripts juntos, ou alguns usando outras ferramentas de criação de pacotes, a função de elevação pode interromper scripts conflitantes de maneiras difíceis de depurar, pois falham silenciosamente. Um re-declarado
const
lançará uma exceção antes que o programa possa ser executado, portanto é muito mais fácil depurar.fonte
const
. É um pouco míope, IMO, começar a usar emconst
qualquer lugar por esse motivo na era do eslint, webpack, babel e assim por diante. Ninguém mais concatena arquivos manualmente manualmente há pelo menos uma década.Eis por que você deve usar
function
:A sinalização é clara e concisa. Isso é muito mais benéfico do que qualquer uma das preocupações de içamento da borda listadas na outra resposta.
Você realmente deseja içar dentro dos módulos porque, como você pode ver no código abaixo, a
const
declaração detryDoTheThing
falha falha silenciosamente e não será capturada até que você tente chamá-la.A maioria dos juniores com quem eu entrei em contato começa
const
a declarar todas as funções porque é uma moda passageira no momento, como usar espaços sobre guias ou criar tudofunctional!!!
porque "OOP está ruim". Não faça isso. Você não quer ser aquele cara que segue modismos sem entender completamente as implicações.vs
fonte