He estado escribiendo mucho código ES6 para io.js recientemente. No hay mucho código en la naturaleza para aprender, así que siento que estoy definiendo mis propias convenciones a medida que avanzo.
Mi pregunta es acerca de cuándo utilizar const
vs let
.
He estado aplicando esta regla: si es posible, úsala const
. Úselo solo let
si sabe que su valor debe cambiar. (Siempre puede regresar y cambiar a const
a a let
si luego resulta que necesita cambiar su valor).
La razón principal de esta regla es que es fácil de aplicar de manera consistente. No hay zonas grises.
La cuestión es que, cuando aplico esta regla, en la práctica lo son el 95% de mis declaraciones const
. Y esto me parece raro. Solo lo uso let
para cosas como i
en un for
bucle, u ocasionalmente para cosas como los totales acumulados de Fibonacci (que no aparece mucho en la vida real). Me sorprendió esto: resulta que el 95% de las 'variables' en mi código ES5 hasta la fecha eran para valores que no varían. Pero ver const
todo mi código se siente mal de alguna manera.
Entonces mi pregunta es: ¿está bien usar const
tanto? ¿Realmente debería estar haciendo cosas como const foo = function () {...};
?
¿O debería reservar const
para ese tipo de situaciones en las que está codificando un literal en la parte superior de un módulo, como el que hace en mayúsculas const MARGIN_WIDTH = 410;
?
function foo() {...}
es mejor que<anything> foo = function() {...}
function foo() {...}
puede causar una confusión menor al depurar, debido a la elevación. Además, su existencia significa que tenemos dos construcciones que hacen lo mismo, pero una de ellas solo funciona en un contexto muy específico. (Puede usar una expresión de función en cualquier lugar donde pueda existir una expresión, pero solo puede usar una declaración de función a nivel de enunciado). Si favorece la brevedad, el problema podría ser que la sintaxis de expresión de función use la palabra completa function
.
const
esto.