J'ai écrit beaucoup de code ES6 pour io.js récemment. Il n’ya pas beaucoup de code dans la nature à apprendre, alors j’ai l’impression de définir mes propres conventions au fur et à mesure.
Ma question est quand utiliser const
vs let
.
J'ai appliqué cette règle: si possible, utilisez const
. Utilisez uniquement let
si vous savez que sa valeur doit changer. (Vous pouvez toujours revenir en arrière et changer un const
en un let
s'il s'avère que vous devez changer sa valeur plus tard.)
La principale raison de cette règle est qu'il est facile à appliquer de manière cohérente. Il n'y a pas de zones grises.
En réalité, lorsque j’applique cette règle, en pratique, 95% de mes déclarations le sont const
. Et cela me semble bizarre. Je n'utilise que let
pour des choses comme i
dans une for
boucle, ou occasionnellement pour des choses comme les totaux accumulés de Fibonacci (qui ne sont pas très fréquents dans la vie réelle). Cela m'a surpris - il s'avère que 95% des «variables» dans mon code ES5 à ce jour étaient pour des valeurs qui ne varient pas. Mais voir const
partout dans mon code me semble mal.
Ma question est donc la suivante: est-il acceptable d’utiliser const
autant? Devrais-je vraiment faire des choses comme const foo = function () {...};
?
Ou devrais-je réserver const
pour ce genre de situations où vous codez en dur un littéral en haut d'un module - le genre que vous faites en majuscules, comme const MARGIN_WIDTH = 410;
?
function foo() {...}
est meilleur que<anything> foo = function() {...}
function foo() {...}
peut entraîner une confusion mineure lors du débogage, en raison du levage. De plus, son existence signifie que nous avons deux constructions qui font la même chose, mais que l’une d’elles ne fonctionne que dans un contexte très spécifique. (Vous pouvez utiliser une expression de fonction n'importe où une expression peut exister, mais vous ne pouvez utiliser qu'une déclaration de fonction au niveau de l'instruction.) Si vous préférez être bref, le problème pourrait simplement être que la syntaxe de l'expression de fonction utilise l'intégralité du mot function
.
const
autant.