Let vs const: 驴qu茅 usar?

Hola Habr! Les presento la traducci贸n del art铆culo "On let vs const" de Dan Abramov .

Mi publicaci贸n anterior contiene este p谩rrafo:

let vs const vs var : Normalmente, todo lo que necesitas es let . Si necesita evitar la reescritura de una variable, puede usar const . (Algunos son muy pedantes al respecto y prefieren usar const cuando solo hay una asignaci贸n variable).

Esta declaraci贸n result贸 ser muy controvertida, en Twitter'e y Reddit'e inmediatamente comenzaron discusiones acaloradas sobre esto. Parece que la opini贸n m谩s popular (o al menos verbalmente expresada por la mayor铆a) es que siempre debe usar const y referirse a let solo si es necesario, lo que puede proporcionar la regla prefer-const de ESLint.

En esta publicaci贸n, enumerar茅 brevemente todos los pros y los contras que conoc铆 y expresar茅 mi opini贸n personal sobre este asunto.

驴Por qu茅 preferir const?


  • Una regla clara: esta es una carga adicional para el cerebro cuando tienes que pensar cada vez si usar const o let es mejor. La regla "Usar siempre const donde funciona" lo libera de problemas innecesarios y deja esta tarea a la lista.
  • Las reasignaciones pueden causar errores: en las funciones de gran tama帽o, sucede que es posible que no se d茅 cuenta si se reasigna una variable, y esto puede ser la causa de los errores. Especialmente en cierres. Const le garantiza que siempre ver谩 el mismo valor.
  • Comprensi贸n de la mutaci贸n: aquellos que reci茅n comienzan a aprender JavaScript pueden malinterpretar el principio de constante , pensando que previene la mutaci贸n de una variable. Es importante comprender la diferencia entre mutar una variable y su reasignaci贸n. Usar const te obliga a comprender y confrontar esta distinci贸n desde el principio.
  • Reasignaciones sin sentido: a veces, reasignar una variable no tiene ning煤n sentido. Por ejemplo, en React Hooks, los valores que obtiene del gancho, como useState, son m谩s como par谩metros. Ellos van en la misma direcci贸n. Al ver un error en su asignaci贸n, pronto aprender谩 sobre el flujo de datos React.
  • Ventajas de la ejecuci贸n: tambi茅n hay afirmaciones poco frecuentes de que el motor de JavaScript puede ejecutar c贸digo m谩s r谩pido donde se usa const , ya que sabe que una variable no se puede sobrescribir.

驴Por qu茅 no prefieres const


  • Const pierde su significado: si usamos const en todas partes, perderemos la capacidad de comprender si era importante que algo no fuera reasignado.
  • La verg眉enza con la inmunidad: en cada discusi贸n donde dicen que siempre debes usar const , hay quienes est谩n confundidos sobre el tema de la inmunidad. Esto no es sorprendente ya que ambas operaciones (declaraci贸n y reasignaci贸n) usan el mismo operador "=". En respuesta a esto, generalmente dicen que solo necesitas "aprender el idioma". Sin embargo, los argumentos en contra son tales que si el m茅todo, que es evitar los errores de los principiantes, confunde a estos mismos principiantes, entonces esto no es tan 煤til. Y, desafortunadamente, esto no ayuda a prevenir errores de mutaci贸n que se extienden a los m贸dulos y afectan todo.
  • Presi贸n para evitar la sobredeclaraci贸n: los defensores del m茅todo "const-first" obligan a los desarrolladores a no utilizar variables let in declaradas en la condici贸n. Por ejemplo, puedes escribir
    const a = cond ? b : c 
    en lugar de las condiciones if , incluso si ambas ramas (objetos) byc son complejas y darles nombres detallados es dif铆cil.
  • La reasignaci贸n no puede ser la causa de errores: hay tres componentes principales cuando la reasignaci贸n puede ser la causa de errores: el alcance es demasiado grande (como una funci贸n modular o grande), cuando el valor es un par谩metro (ya que no se espera que sea igual a cualquier otra cosa de lo que se pas贸), y cuando la variable se usa en una funci贸n anidada. Sin embargo, en muchas situaciones, la mayor铆a de las variables no corresponden a ninguno de estos casos, y los par谩metros no pueden designarse como constantes.
  • No hay ventaja de rendimiento: es mi opini贸n que el motor ya est谩 advertido, qu茅 variables se declaran una vez, incluso si usa var o let . Si continuamos argumentando que const hace que el c贸digo sea m谩s productivo, entonces tambi茅n podemos argumentar que las verificaciones adicionales pueden aumentar el tiempo de ejecuci贸n en lugar de disminuirlo. En serio, los motores son m谩s inteligentes.

Mi opinion


No me importa

Puedo usar cualquier regla que otros usen.

Si le importa, use el linter, que automatiza la verificaci贸n y correcci贸n, cambiando let to const , para que no pierda su tiempo en la futura revisi贸n del c贸digo.

Por 煤ltimo, recuerde que las linters est谩n dise帽adas para facilitar el desarrollo. Si alguna regla te molesta a ti o a tu equipo, simplemente qu铆tala. Ser谩 lo mejor. Aprende de tus errores.

Enlace al art铆culo original - On let vs const .

Source: https://habr.com/ru/post/482892/


All Articles