Par exemple, dans cette vidéo Redux , l'instructeur utilise toujours une syntaxe comme
const counter = (state=0, action) => {
... function body here
}
où j'utiliserais simplement le "traditionnel"
function counter(state=0, action) {
... function body here
}
Ce qui est en fait plus court et, à mon avis, plus clair. Il est plus facile de scanner le bord gauche assez uniforme et structuré de la page pour le mot «fonction» que de scanner le bord droit irrégulier pour un petit «=>».
À part this
, et en essayant d'être objectif, pas d'opinion, y a-t-il une différence ou un avantage utile à la nouvelle syntaxe?
javascript
functions
es6
user949300
la source
la source
const
permet de s'assurer que la fonction ne sera pas redéfinie plus tard.Réponses:
Les instructions de fonction (fonctions nommées, 2e syntaxe illustrée) sont hissées au sommet de la portée lexicale complète, même celles qui se trouvent derrière des blocs arbitraires et de contrôle, comme les
if
instructions. L'utilisation deconst
(likelet
) pour déclarer une variable lui donne une portée de bloc, arrête le levage complet (levage vers un simple bloc) et garantit qu'elle ne peut pas être déclarée à nouveau.Lors de la concaténation de scripts ensemble ou de l'utilisation d'autres outils de création de packages, le levage de fonctions peut casser des scripts conflictuels de manière difficile à déboguer car il échoue silencieusement. Une nouvelle déclaration
const
lèvera une exception avant que le programme puisse s'exécuter, il est donc beaucoup plus facile de déboguer.la source
const
. C'est un peu myope, OMI, de commencer à utiliserconst
partout pour cette raison à l'ère de l'eslint, du webpack, du babel et ainsi de suite. Personne ne concatène les fichiers ensemble manuellement depuis au moins une décennie maintenant.Voici pourquoi vous devriez utiliser
function
:La signalisation est claire et concise. Ceci est beaucoup plus bénéfique que toutes les préoccupations de levage de cas de bord qui sont énumérées dans l'autre réponse.
Vous voulez réellement hisser dans les modules car comme vous pouvez le voir dans le code ci-dessous, la
const
déclaration d'tryDoTheThing
échec en silence et ne sera pas interceptée jusqu'à ce que vous essayiez de l'appeler.La plupart des juniors avec lesquels je suis en contact commencent à utiliser
const
pour déclarer chaque fonction parce que c'est une mode en ce moment, comme utiliser des espaces sur des tabulations ou tout fairefunctional!!!
parce que "OOP mauvais". Ne fais pas ça. Vous ne voulez pas être ce gars qui suit les modes sans comprendre pleinement les implications.contre
la source