Eloquent JavaScript 4.ª edición (2024)

Recepción general e impacto

  • Muy elogiado, considerado por muchos comentaristas como su libro favorito de JavaScript; varios dicen que “me enseñó JavaScript” o que fue su primera introducción real a la informática.
  • Se ve como adecuado para personas que ya saben algo de programación y quieren profundizar en JS, más que como un libro ideal para aprender a programar por primera vez.
  • A menudo se recomienda junto con otros recursos como “You Don’t Know JS”, JavaScript.info y varios libros de JS “impacientes” / “profundos”.
  • A algunos lectores no les gusta especialmente el estilo personal del autor, pero aun así consideran el libro extremadamente valioso.

JavaScript vs TypeScript para quienes aprenden

  • Un grupo sostiene que los principiantes deberían empezar con JS puro:
    • Evita la confusión sobre qué es el lenguaje base y qué es la herramienta.
    • Refleja problemas pasados en los que la gente culpaba a “JavaScript” por las rarezas del DOM/navegador.
    • TS podría cambiar o desaparecer con el tiempo; JS es la base estable.
  • Otro grupo recomienda empezar directamente con TypeScript:
    • Se describe como el estándar de facto en gran parte de la industria.
    • Cualquier JS es TS válido, y la inferencia de tipos mantiene baja la sobrecarga sintáctica.
    • Gran ventaja para refactorización y proyectos grandes.
  • Se expresan preocupaciones de que TS pueda dar una idea equivocada a los recién llegados sobre los tipos en tiempo de ejecución; se mencionan bibliotecas de validación en tiempo de ejecución (p. ej., librerías de schema/parse) como complementos importantes.

Actualizaciones y formato de la cuarta edición

  • Descrita como “ajustada a las realidades de 2024” y, en general, pulida.
  • Entre las actualizaciones técnicas señaladas están: campos privados (#), imports ESM en Node, Object.hasOwn, ** en lugar de Math.pow, y más cobertura de generadores y async.
  • Varias personas piden un changelog claro; otras señalan los diffs en GitHub entre la 3.ª y la 4.ª edición.
  • La versión en línea es gratuita y de código abierto; la edición impresa está prevista pero aún no está disponible.

Explicaciones conceptuales: variables, async, errores

  • Largo subhilo sobre explicar las variables como “bindings” (nombres que apuntan a valores) frente a “cajas”:
    • Quienes lo apoyan dicen que “binding” se ajusta a la especificación, funciona uniformemente para primitivos y objetos, y es una mejor abstracción.
    • Quienes son escépticos temen que la terminología y la metáfora de los “tentáculos” confundan a los principiantes y que el modelo de “caja” sea más simple al principio.
  • El capítulo de async se destaca como especialmente bueno en la nueva edición; la antigua analogía del “cuervo” en una edición anterior se consideró confusa por algunos.
  • Un comentarista critica un ejemplo que lanza excepciones para condiciones esperadas de entrada del usuario, argumentando a favor de objetos de retorno explícitos al estilo Result con códigos de error; otros defienden que las excepciones con códigos y la propagación ascendente son patrones aceptables.

Detalles del lenguaje JavaScript discutidos

  • Varios comentarios sobre números y aritmética entera:
    • Se aclara que el Number tradicional de JS es un flotante; BigInt y los arrays tipados ahora existen para casos de uso enteros.
    • Algunos señalan que las implementaciones de BigInt pueden ser asintóticamente rápidas.
  • Subdebates sobre tipado fuerte vs débil, garantías en tiempo de ejecución vs tiempo de compilación, y los límites de los sistemas de tipos en las fronteras de las API.

Recursos de aprendizaje y hábitos de estudio

  • Muchos lectores comparten estrategias para aprender con libros técnicos: tomar notas activamente, hacer ejercicios, escribir ejemplos, repetición espaciada y tratar la versión interactiva en línea como un flujo de trabajo “leer–programar–leer–programar”.