4 respuestas
La gente tiene razón en que `var` es problemático, pero lo de la inmutabilidad con `const` no es así exactamente - `const` solo congela la referencia, no el contenido, entonces tranquilamente podés modificar un objeto o array declarado con `const`. Lo que realmente marca la diferencia es el scope: `var` es function-scoped (se escapa de los bloques), mientras que `let` y `const` son block-scoped (quedan encerrados en el scope donde fueron creados). Esto causa bugs reales con `var`, como cuando declarás dentro de un `if` y la variable aparece afuera. Mi sugerencia es usar `const` por defecto, `let` cuando realmente necesités reasignar, y olvidarse de `var` de una vez.
No uses `var` en código nuevo, en serio. Es la forma antigua y trae problemas con el scope que después te duelen la cabeza. La diferencia principal es justamente en el scope: `var` tiene scope de función, mientras que `let` y `const` tienen scope de bloque. Significa que si declaras una variable con `var` dentro de un `if`, queda accesible fuera del bloque. Con `let` y `const` eso no pasa, queda atrapada ahí mismo.
Entre `let` y `const`, la diferencia es simple: `let` puedes reasignar el valor, `const` no. Si declaras `const miVar = 5`, después no consigues hacer `miVar = 10`. Ya con `let` funciona sin problemas. Parece una cosa pequeña, pero es útil porque evita que cambies una variable sin intención. Mucha gente prefiere usar `const` por defecto y solo pasa a `let` cuando realmente necesita reasignar.
En la práctica, usa `const` siempre que puedas, mete `let` cuando necesites cambiar el valor, y olvídate de `var`. Es básicamente eso. Todavía encuentras código antiguo con `var` a montones, pero para cosas nuevas no tiene sentido 🤷
La diferencia de escopo que mencionaron es real, pero lo más práctico en el día a día es realmente la inmutabilidad. Con `const` garantizas que la referencia no cambia, lo que evita bugs tontos donde alguien (o tú mismo después) accidentalmente reasigna una variable. `Let` es flexible cuando lo necesitas, pero `const` por defecto hace el código mucho más predecible y seguro.
En la práctica, el truco que nadie mencionó es usar `const` por defecto y solo recurrir a `let` cuando realmente necesitas reasignar algo - así fuerzas tu cerebro a pensar mejor sobre qué es mutable y qué no, y evitas esos bugs molestos donde cambias una variable sin darte cuenta. `var` es prácticamente obsoleto de todas formas, la gente tiene razón en eso.
Tu respuesta
Iniciar sesiónpara responder.