De manera similar a esta pregunta , ¿cuáles son las ventajas de usar const dentro de js para bucles en lugar de let y var para valores que cambian cada iteración?
No soy un fan particular de este patrón, pero estoy interesado en conocer las ventajas de este patrón.
Cuando escribo JavaScript en Visual Studio y escribo, sugiere for siguiente bloque de código:
for (let index = 0; index < array.length; index++) { const element = array[index]; } Personalmente, no soy un fanático de este patrón, ya que reasignar un valor a una const en cada iteración, ya que parece violar la idea central de una constante (sí, sé que la constante técnicamente está fuera del alcance, pero todavía se siente como una const ) siendo asignado un nuevo valor).
Supongo que debe haber muchas buenas razones para este patrón, de lo contrario, ¿por qué se mantendría como un bloque de código sugerido? Se me ocurrió una buena razón, pero todavía tengo curiosidad sobre las ventajas que me estoy perdiendo.
Podría ver que esto es útil dentro de un bloque de código grande en el que debe asegurarse de que nadie use este nombre o que se haga referencia a este nombre varias veces esperando el mismo valor.
Si no estás contento con
for (let index = 0; index < array.length; index++) { const element = array[index]; } entonces es posible que no esté satisfecho con la mayoría de los usos de const , como los de la mayoría de las funciones, ya que los valores a menudo varían.
function getFullName(first, last) { const fullName = first + ' ' + last; return fullName; } El propósito de const es indicar que ese enlace de variable en particular , en el ámbito en el que se encuentra, nunca se reasignará. Eso es todo. En su ciclo, se crea un nuevo entorno variable con cada iteración, y en cada uno de esos entornos, se crea una const . Usar let en su lugar aquí no aclararía las cosas; por el contrario, usar let solo porque estás dentro de un ciclo (o dentro de una función, como en mi ejemplo anterior) generalmente indicaría un malentendido del alcance.
const no significa, y nadie debería interpretarlo como que implica:
Cada vez que algo en cualquier lugar hace referencia a una variable llamada
<x>, el valor será<y>.
Sugiero usar const siempre que sea apropiado, es decir, siempre que un enlace de variable en particular, en el ámbito en el que se encuentra, nunca se reasigna. Eso es todo lo que se necesita para que sea válido, así lo usan la gran mayoría de los desarrolladores profesionales, y eso es lo que pretende indicar. Por supuesto, no tiene que hacerlo, puede usar let en su lugar, pero usar const hará que el código sea un poco más fácil de leer de un vistazo cuando sepa que el identificador no se reasignará en el ámbito en el que se encuentra.
Evite var , especialmente en los bucles, y especialmente si existe la posibilidad de que se ejecute algún código asíncrono; tiene un alcance de función poco intuitivo, no un alcance de bloque. for (let i = tiene un nuevo enlace para cada iteración; for (var i solo tiene un enlace único; vea esta famosa pregunta ). ( var también crea propiedades en el objeto global cuando está en el nivel superior, y no le avisará cuando intenta declarar una variable más de una vez en un ámbito determinado, lo que suele ser indicativo de un error. const y let no tienen esos problemas).